您的位置:首页 > 其它

带头结点的单链表反转

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;
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: