您的位置:首页 > 其它

反向输出链表

2016-05-23 00:00 316 查看
代码:
#include <iostream>

#include <vector>

#include <iterator>

#include <cassert>

#include<algorithm>//copy
using namespace std;

const int n=2;

struct node

{

int i;

node *next;

};

node *Reverse(node *head)

{

//判断链表是否为空

assert(head != NULL && " function Reverse : list is null!");

node *temp=head->next;

//链表只有一个元素情况

if(temp == NULL ) return head;

//链表翻转前head-->temp-->tail,翻转后tail-->temp-->head

head->next=NULL;

node *tail=temp->next;

while(tail != NULL)

{

temp->next=head;

head=temp;

temp=tail;

tail=tail->next;

}

temp->next=head;

//返回翻转后的链表头指针

return temp;

}

void Print(node *head)

{

while(head != NULL)

{

cout<<head->i<<" ";

head=head->next;

}

cout<<endl;

}

int main()

{

node *head=NULL,*tail=NULL,*temp=NULL;

head= new node;

head->i=1;head->next=NULL;

tail=head;

for(int i=2;i<=n;++i)

{

temp =new node;

temp->i=i;temp->next=NULL;

tail->next=temp;

tail=temp;

}

Print(head);

cout<<"------------"<<endl;

head=Reverse(head);

Print(head);

return 0;

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