✎
编程开发网
首页
C语言
C++
面试
Linux
函数
Windows
数据库
下载
搜索
当前位置:
首页
->
基础
->
c++编程基础
编程之美读书笔记---单链表反序---要求只遍历一次
2014-11-23 22:57:57
·
作者:
·
浏览:
7
标签:
编程
读书
笔记
---
单链表
要求
一次
扩展问题:
编写一个函数,给定一个链表的头指针,要求只遍历一次,将单链表中的元素顺序反序。
#include
#include
#include
#include
using namespace std; struct node{ int data; node *next; }; void reverselist(node* &head) { node *p,*q; p=head->next; q=head->next->next; if(q==NULL)return; //若链表只有一个元素,则不操作 p->next=NULL; while(q->next!=NULL) { node *tmp=q->next; q->next=p; p=q; q=tmp; } q->next=p; head->next=q; //将表头指针调转 } void destroy(node* &head) { node *p=head; head=head->next; while(head->next!=NULL) { delete p; p=head; head=head->next; } delete p; delete head; } int main() { node *head=new node; head->next=NULL; int n; cin>>n; while(n--) { node *pt=new node; cin>>pt->data; pt->next=head->next; head->next=pt; } reverselist(head); //此时简历的链表是输入的逆序,所以倒序后成为输入的正序 node *pt=head->next; while(pt->next!=NULL) { cout<
data<<" "; pt=pt->next; } cout<
data<
#include
#include
#include
using namespace std; struct node{ int data; node *next; }; void reverselist(node* &head) { node *p,*q; p=head->next; q=head->next->next; if(q==NULL)return; //若链表只有一个元素,则不操作 p->next=NULL; while(q->next!=NULL) { node *tmp=q->next; q->next=p; p=q; q=tmp; } q->next=p; head->next=q; //将表头指针调转 } void destroy(node* &head) { node *p=head; head=head->next; while(head->next!=NULL) { delete p; p=head; head=head->next; } delete p; delete head; } int main() { node *head=new node; head->next=NULL; int n; cin>>n; while(n--) { node *pt=new node; cin>>pt->data; pt->next=head->next; head->next=pt; } reverselist(head); //此时简历的链表是输入的逆序,所以倒序后成为输入的正序 node *pt=head->next; while(pt->next!=NULL) { cout<
data<<" "; pt=pt->next; } cout<
data<