逆序带头结点的单向链表
2015-02-06 11:02
267 查看
typedef struct _node { int val; struct _node *next; }NODE; typedef struct _list { NODE * head; int count; }LIST;
/*********************************************************** **逆序过程如下: ** head -> node1 -> node2 -> node3 -> node4 -> null **step1 head -> node1 -> null node2 -> node3 -> node4 -> null **step2 head -> node2 -> node1 -> null node3 -> node4 -> null **step3 head -> node3 -> node2 -> node1 -> null node4 -> null **step4 head -> node4 -> node3 -> node2 -> node1 -> null ************************************************************/ int reverse_list(LIST *list) { if ((list == NULL) || (list->head == NULL)) return -1; NODE *tmp1 = list->head->next; NODE *tmp2 = NULL; NODE *tmp3 = tmp1->next; /*第一个结点会成为最后一个结点,next必须指向null*/ tmp1->next = NULL; while (tmp3->next != NULL) { tmp2 = tmp3; tmp3 = tmp3->next; tmp2->next = tmp1; tmp1 = tmp2; } /*这里是step4*/ tmp3->next = tmp1; list->head->next = tmp3; return 0; }
相关文章推荐
- 带头结点的单向链表
- 带头结点的循环单向链表
- 不带头结点的循环单向链表
- 建立一个带头结点的的单向链表并输出到out53.dat和屏幕上。各节点的值为对应的下表。链表的节点数及输出地文件名作为参数传入
- 单向不带头结点不带环的链表实现
- 不带头节点的单向链表逆序
- 有一个带头结点的单链表L={a1,b1,a2,b2,...,an,bn},设计一个算法将其拆分成两个带头结点的单链表A和B,正序链表A={a1,a2,a3...,an},逆序链表B={bn,bn-1,
- 删除不带头结点的单链表的非尾结点&&逆序打印单链表
- 不带头结点的单向链表排序——插入排序(C语言)
- 统计带头结点的单向链表的个数并存放在形参n所指的单元中。 欢迎评论 指点。
- 带头结点的非循环单向链表
- 线性表的链式存储结构_单向链表[带头结点]_C#实现
- 单向链表逆转(带头结点)的两种方法
- 基于链表:键盘输入若干个整数,按输入数据逆序建立一个带头结点的单链表
- 已知单向链表的头结点head,写一个函数把这个链表逆序 ( Intel)
- 数据结构实验-用C++实现带头结点的循环链表
- 带头结点链表的实现
- 带头结点的单链表——数据结构课堂作业
- 带头结点的单链表上将后k个结点变换为前k个结点的操作
- 单向链表每k个数逆序拼接