C++ 单链表反转

来源:互联网 发布:数据机房新风 编辑:程序博客网 时间:2024/06/08 09:36

 

复习下C++ 单链表反转

思路:

在顺序读取链表的过程中,对每个节点逐个进行反转

 

首先创建单链表

 

struct LinkNode{int NodeData;LinkNode *next;};LinkNode * createLink(){LinkNode * head=new LinkNode;head->NodeData=0;head->next=NULL;LinkNode *p=head;for(int i=1;i<10;i++){LinkNode *newnode=new LinkNode;newnode->NodeData =i;newnode->next=NULL;p->next=newnode;p=newnode;}return head;}


 

对链表进行反转

LinkNode *reverse(LinkNode *head){LinkNode *p,*q,*temp;if(head == NULL|| head->next == NULL)return head;p=head;q=p->next;while(q->next!=NULL){temp = q->next;q->next=p;p=q;q=temp;}q->next=p;head->next=NULL;return q;}


 

下面是完整的代码

#include<iostream>using namespace std;struct LinkNode{int NodeData;LinkNode *next;};LinkNode * createLink(){LinkNode * head=new LinkNode;head->NodeData=0;head->next=NULL;LinkNode *p=head;for(int i=1;i<10;i++){LinkNode *newnode=new LinkNode;newnode->NodeData =i;newnode->next=NULL;p->next=newnode;p=newnode;}return head;}LinkNode *reverse(LinkNode *head){LinkNode *p,*q,*temp;if(head == NULL|| head->next == NULL)return head;p=head;q=p->next;while(q->next!=NULL){temp = q->next;q->next=p;p=q;q=temp;}q->next=p;head->next=NULL;return q;}int main(){LinkNode *head,*reversehead,*showlink,*reverselink,*showreverselink;head=createLink();showlink=head;reversehead=head;cout<<"showlink data is:"<<endl;while(showlink->next!=NULL){cout<<showlink->NodeData<<'\t';showlink=showlink->next;}cout<<showlink->NodeData<<endl;cout<<"reverselink data is:"<<endl;reverselink=reverse(reversehead);showreverselink=reverselink;while(showreverselink->next!=NULL){cout<<showreverselink->NodeData<<'\t';showreverselink=showreverselink->next;}cout<<showreverselink->NodeData<<endl;}


 

 

0 0
原创粉丝点击