C/C++笔试经典——链表倒序
设链表节点为:
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++笔试经典——链表倒序相关推荐
- python单链表逆序_python链表倒序
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python 实现双向链表(图解)----双向链表双向链表也叫双链表,是链表的一 ...
- java期末考试2013及答案_java笔试经典(题及答案)2013.doc
java笔试经典(题及答案)2013.doc Java笔试经典(基础部分及答案和分析)1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?7答:可以包括多个 ...
- linux找出重复数字,C语言笔试经典-查找多位数重复数字以及次数
从键盘输入一个多位的整数 用程序判断 这个数里面有没有 重复的数字 有重复的数字就打印 哪个数字重复了 重复了几次 例如:输入:1122431 打印结果: 1重复 出现3次 2重复 出现2次, ...
- SQL笔试经典50题及答案解析(题目1-10)
前言 最近博主在准备数据分析岗位的笔试和面试,其中的考察重点就是SQL.听说练了这50道题目(题目和数据来源参考:互联网校招SQL笔试经典50题及答案解析),什么现场手撕SQL统统都不怕,我就赶紧来练 ...
- SQL笔试经典50题及答案解析
[转]SQL笔试经典50题及答案解析 建表语句 create table Student(sid varchar(10),sname varchar(10),sage datetime,ssex nv ...
- SQL笔试经典50题及答案解析(题目21-30)
前言 最近博主在准备数据分析岗位的笔试和面试,其中的考察重点就是SQL.听说练了这50道题目(题目和数据来源参考:互联网校招SQL笔试经典50题及答案解析),什么现场手撕SQL统统都不怕,我就赶紧来练 ...
- 嵌入式C语言方面面试、笔试经典问题/题目
转自:https://blog.csdn.net/ffmxnjm/article/details/51519976:感谢博主:ffmxnjm整理 第一部分:基本概念及其它问答题 3 1.关键字stat ...
- 【数据结构与算法】链表倒序输出算法
题意说明 将一个链表的元素倒序输出-- 数据结构的选择 我们选择栈作为辅助结构,使链表具有"栈"的功能(这个LIFO不就是栈的功能吗--) 思路 将链表元素装进栈里,倒序输出,fi ...
- 数据分析笔试经典sql题解
欢迎关注微信公众号:开心数据 前言:sql是数据分析师笔试必考的考点之一,常考的题型有行列转换.联表查询,这些都比较简单,一般考的最难的就是hivesql窗口函数联表查询,普通的聚合函数每组(Grou ...
最新文章
- 通用电气Predix改革客户运作的三大用途
- 我是架构师-基本类型-float
- ITK:线性强度变换
- 记一次 .NET 医院CIS系统 内存溢出分析
- Android 开源框架 ( 二 ) 基于OkHttp进一步封装的okhttp-utils介绍
- Python_多元回归(一元回归)
- 网络七大趋势 媒介将很快彻底消失
- __call__()和call的区别_python中的__init__ 、__new__、__call__小结
- Javascript脚本之清除浏览器历史数据
- paip.注册java程序为LINUX系统服务的总结。
- VC “变速齿轮”再研究
- 计算机专业毕业论文审查意见,计算机专业毕业论文评语
- 【Unity3D开发小游戏】Unity3D开发《3D迷宫》小游戏
- NDT算法原理及相关源代码
- hbuilder发生了错误请参阅日志文件1545838571032
- NLS_LANG与NLS_LANGUAGE的区别
- 稳定性测试-几点总结
- 中关村十大AI研究院|盘点
- 字符串转时间(time_t)
- Debian10.9离线安装gcc(附离线包地址)