链表逆序
2013-12-27 16:45
127 查看
typedef struct Node { int data; struct Node *next; }List;
非递归:
List* ReverseList( List * head ) { if(head == NULL || head->next == NULL) { return head; } List* p1 = head; List* p2 = head->next; p1->next =NULL; while(p2) { List* p3 = p2; p2 = p2->next; p3->next = p1; p1 = p3; } return p1; }
递归:
List* rev( List * head ) { List *rHead; if( !head ) { return head; } else if( !head->next ) //只有一个结点 { return head; } else { rHead = rev( head->next ); head->next->next = head; head->next = NULL; return rHead; } }
相关文章推荐
- 链表逆序的原理及实例
- 将链表逆序操作
- 记录自已学习之单链表(逆序)
- [SDUT](2117)数据结构实验之链表二:逆序建立链表 ---链式存储(线性表)
- 链表的各种操作实现 链表逆序 链表排序 有序链表归并 链表存在环的判定
- 单链表的基本操作,正序/逆序建表(尾插法/头插法)、计算单链表长度、输出单链表内容、插入、删除,给出完整代码
- 微软算法100题24 就地逆序单链表
- 链表逆序、判断是否有环、求环的起点;两个链表是否相交、交点
- 数据结构基础--单链表逆序
- 链表逆序(反转)
- sdut.acm2012级《程序设计基础Ⅱ)》_链表 数据结构实验之链表二:逆序建立链表
- 实现链表中存储数据的逆序
- 数据结构实验之链表二:逆序建立链表
- 面试题16:链表逆序
- 删除链表中的重复节点、剩余节点逆序输出
- 6-3 逆序数据建立链表(20 分)_头插法建链表
- 链表逆序
- HDU 5193 Go to movies Ⅱ 块状链表套树状数组(带插入和删除的逆序对)
- 从尾到头打印链表(五种方法包括链表翻转、递归、栈、容器逆序)
- 将单向链表逆序