设链表节点为:

typedef struct tagListNode{int data;struct tagListNode* next;
}ListNode, *List;

要求将一带链表头List head的单向链表逆序。

分析:

1). 若链表为空或只有一个元素,则直接返回;

2). 设置两个前后相邻的指针p,q. 将p所指向的节点作为q指向节点的后继;

3). 重复2),直到q为空

4). 调整链表头和链表尾

示例:以逆序A->B->C->D为例,图示如下

实现及测试代码如下:

#include <stdio.h>
#include <stdlib.h>typedef struct tagListNode{int data;struct tagListNode* next;
}ListNode, *List;void PrintList(List head);
List ReverseList(List head);int main()
{//分配链表头结点ListNode *head;head = (ListNode*)malloc(sizeof(ListNode));head->next = NULL;head->data = -1;//将[1,10]加入链表int i;ListNode *p, *q;p = head;for(int i = 1; i <= 10; i++){q = (ListNode *)malloc(sizeof(ListNode));q->data = i;q->next = NULL;p->next = q;p = q;        }PrintList(head);           /*输出原始链表*/head = ReverseList(head);  /*逆序链表*/PrintList(head);           /*输出逆序后的链表*/return 0;
}List ReverseList(List head)
{if(head->next == NULL || head->next->next == NULL)  {return head;   /*链表为空或只有一个元素则直接返回*/}ListNode *t = NULL,*p = head->next,*q = head->next->next;while(q != NULL){        t = q->next;q->next = p;p = q;q = t;}/*此时q指向原始链表最后一个元素,也是逆转后的链表的表头元素*/head->next->next = NULL;  /*设置链表尾*/head->next = p;           /*调整链表头*/return head;
}void PrintList(List head)
{ListNode* p = head->next;while(p != NULL){printf("%d ", p->data);p = p->next;}printf("/n");
}

来自:http://blog.csdn.net/niuer09/article/details/5961004

C/C++笔试经典——链表倒序相关推荐

  1. python单链表逆序_python链表倒序

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python 实现双向链表(图解)----双向链表双向链表也叫双链表,是链表的一 ...

  2. java期末考试2013及答案_java笔试经典(题及答案)2013.doc

    java笔试经典(题及答案)2013.doc Java笔试经典(基础部分及答案和分析)1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?7答:可以包括多个 ...

  3. linux找出重复数字,C语言笔试经典-查找多位数重复数字以及次数

    从键盘输入一个多位的整数 用程序判断 这个数里面有没有 重复的数字  有重复的数字就打印  哪个数字重复了  重复了几次 例如:输入:1122431 打印结果: 1重复 出现3次 2重复 出现2次, ...

  4. SQL笔试经典50题及答案解析(题目1-10)

    前言 最近博主在准备数据分析岗位的笔试和面试,其中的考察重点就是SQL.听说练了这50道题目(题目和数据来源参考:互联网校招SQL笔试经典50题及答案解析),什么现场手撕SQL统统都不怕,我就赶紧来练 ...

  5. SQL笔试经典50题及答案解析

    [转]SQL笔试经典50题及答案解析 建表语句 create table Student(sid varchar(10),sname varchar(10),sage datetime,ssex nv ...

  6. SQL笔试经典50题及答案解析(题目21-30)

    前言 最近博主在准备数据分析岗位的笔试和面试,其中的考察重点就是SQL.听说练了这50道题目(题目和数据来源参考:互联网校招SQL笔试经典50题及答案解析),什么现场手撕SQL统统都不怕,我就赶紧来练 ...

  7. 嵌入式C语言方面面试、笔试经典问题/题目

    转自:https://blog.csdn.net/ffmxnjm/article/details/51519976:感谢博主:ffmxnjm整理 第一部分:基本概念及其它问答题 3 1.关键字stat ...

  8. 【数据结构与算法】链表倒序输出算法

    题意说明 将一个链表的元素倒序输出-- 数据结构的选择 我们选择栈作为辅助结构,使链表具有"栈"的功能(这个LIFO不就是栈的功能吗--) 思路 将链表元素装进栈里,倒序输出,fi ...

  9. 数据分析笔试经典sql题解

    欢迎关注微信公众号:开心数据 前言:sql是数据分析师笔试必考的考点之一,常考的题型有行列转换.联表查询,这些都比较简单,一般考的最难的就是hivesql窗口函数联表查询,普通的聚合函数每组(Grou ...

最新文章

  1. 通用电气Predix改革客户运作的三大用途
  2. 我是架构师-基本类型-float
  3. ITK:线性强度变换
  4. 记一次 .NET 医院CIS系统 内存溢出分析
  5. Android 开源框架 ( 二 ) 基于OkHttp进一步封装的okhttp-utils介绍
  6. Python_多元回归(一元回归)
  7. 网络七大趋势 媒介将很快彻底消失
  8. __call__()和call的区别_python中的__init__ 、__new__、__call__小结
  9. Javascript脚本之清除浏览器历史数据
  10. paip.注册java程序为LINUX系统服务的总结。
  11. VC “变速齿轮”再研究
  12. 计算机专业毕业论文审查意见,计算机专业毕业论文评语
  13. 【Unity3D开发小游戏】Unity3D开发《3D迷宫》小游戏
  14. NDT算法原理及相关源代码
  15. hbuilder发生了错误请参阅日志文件1545838571032
  16. NLS_LANG与NLS_LANGUAGE的区别
  17. 稳定性测试-几点总结
  18. 中关村十大AI研究院|盘点
  19. 字符串转时间(time_t)
  20. Debian10.9离线安装gcc(附离线包地址)

热门文章

  1. LINUX系统服务总结之三:nis服务器全集
  2. 两个Liunx服务器之间的文件夹迁移
  3. 冲刺!11.14-11.15
  4. ipvsadm命令及lvs-nat类型web服务器集群
  5. 《CLR via C#》读书笔记 之 基元类型、引用类型和值类型
  6. iptables01
  7. 推荐一个非常好玩的falsh游戏
  8. Squid 2.6 Configuration Manual - Log File Path Names and Cache Directories
  9. 时间同步服务 chrony
  10. 可信云认证累计达20项,腾讯云技术创新能力再获专业认可