带头结点的单链表反转
2011-08-22 14:33
183 查看
#include <iostream> using namespace std; struct Node { public: int data; Node * pNode; }; void CreateList(Node * Header) { cout<<"Input the node data and end by 0"<<endl; int input; int count = 0; Node * oHeader = Header; while(cin>>input) { if(input == 0) break; else { Node * T = new Node; T->data = input; T->pNode = NULL; Header->pNode = T; Header = Header->pNode; ++count; } } oHeader->data = count; cout<<"Create "<<oHeader->data<<" Nodes"<<endl; } void PrintList(Node * Header) { while(Header->pNode != NULL) { Header = Header->pNode; cout<<Header->data<<" "; } cout<<endl; } void ReversePrintList(Node * Header) { if(Header->pNode != NULL) ReversePrintList(Header->pNode); cout<<Header->data<<" "; } Node * ReverseList(Node * Header) { Node * pPre = NULL; Node * pCurr = Header->pNode; Node * pNext = pCurr->pNode; while(pNext != NULL) { pCurr->pNode = pPre; pPre = pCurr; pCurr = pNext; pNext = pNext->pNode; } pCurr->pNode = pPre; Header->pNode = pCurr; } int main() { Node * Header = new Node; CreateList(Header); cout<<"Print sequence:"<<endl; PrintList(Header); cout<<"Print sequence by reverse:"<<endl; ReversePrintList(Header->pNode); cout<<endl<<"Reverse sequence and print:"<<endl; Header->pNode = ReverseList(Header); PrintList(Header); cout<<"Number of Node is "<<Header->data<<endl; return 0; }
相关文章推荐
- 一个带头结点的单链表反转
- 不带头结点的单链表反转 三种不同方法实现
- 续:一个带头结点的单链表反转(递归)
- 单链表反转问题(带头结点 和 不带头结点的 创建链表过程等)
- 反转带头结点的链表
- 带头结点的单链表( 冒泡排序 一次遍历求中间结点的值) 链表 就地反转 倒数第k个结点
- 2.1删除不带头结点的单链表L中值为x的结点
- 带头结点的单链表就地逆置
- 单链表逆置,反转,并查找倒数第K个结点
- 数据结构(四)——单链表 、带头结点的单链表、循环链表 及其实现
- 带头结点的链表
- 带头结点的双向循环链表
- 菜鸟试手不带头结点单链表倒置
- 删除带头结点的双循环链表p中第i个结点
- 数据结构 P38 算法实现 在带头结点的单链表的第i个元素插入元素e
- 《数据结构》进行曲--带头结点的单循环链表的基本操作
- 不带头结点的链表头插法C++实现
- 求不带头结点的单链表的节点的个数
- 每天一个小程序(2)——带头结点的链表的创建以及插入和删除
- 给一个不带头结点的单链表,写出将链表倒置的算法