C++ 单链表反转
2015-02-04 10:41
357 查看
复习下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;
}
相关文章推荐
- C/C++面试程序题(一)——字符串反转、链表反转的递归、非递归实现
- 简单的链表反转 C++
- 链表反转 C++
- C++ 第二次课堂作业(反转链表)
- C++ 第二次课堂作业(反转链表)
- C++中经典的单向链表反转
- c++反转单链表后半部分
- 剑指offer第十五题【反转链表】c++实现
- 【C++】反转链表
- 【链表】C++链表反转、链表逆序打印
- 单链表的反转 c++
- 【C/C++】反转链表
- 【C++】PAT(basic level)1025. 反转链表 (25)
- 链表反转(C++版)
- C++链表K个节点K个节点的反转((1,2,3,4),如果k是2,反转结果是(2,1,4,3))
- 数据结构 - 反转单链表(C++)
- 反转链表 C++实现
- C++递归与非递归实现链表的反转
- 递归,迭代,堆栈三种方式实现单链表反转(C++)
- C++ - PAT - 1025. 反转链表 (25)