反向输出链表
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);
}
#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;
}
相关文章推荐
- Rebuild Instance 操作详解 - 每天5分钟玩转 OpenStack(37)
- JMeter使用技巧(包括多台分布式测试)
- JMeter(安装配置)学习(一)工具简单介绍
- 分布式开放消息系统(RocketMQ)的原理与实践
- springmvc Could not write content: No serializer
- 利用Docker云计算把家里的电脑变成网站服务器
- java JDBC批量提交数据性能差异
- Java中Integer与int的区别
- 使用python的logging模块在stdout输出
- 一个mysql题
- mysql 的交集和差集
- CentOS 6.5 开启Xmanager远程桌面登录
- Java 爬虫
- Github上搭建个简单的个人博客
- HTML5之触摸事件(touchstart、touchmove和touchend)
- Rust的多继承和mixin机制
- error while loading shared libraries: xxx.so.x"错误
- python 3.5以上安装 lxml 折腾一个下午 - -
- CLR存储过程
- 2016年5月,在广州来了一场“小资”的沙龙