链表逆置
来源:互联网 发布:做代码的软件 编辑:程序博客网 时间:2024/05/21 08:45
1.声明两个指针*q,*p,p指向头结点的next,q指向p的next,让头结点的next为空,链表逆置相当于建立一个新的链表,只是需要将所需的结点在另一个链表中得到。
2.让链表的头结点的next为空,是让它继续当新链表的头结点。
3.新链表的链接和逆序建链表类似,都是让结点直接插入到头结点的后边。
4.所需结点的得到,使用p和q在原来的链表中依次得到,p永远指向将要链接的结点,q指向p结点的下一个结点。
5.当链接上一个结点的时候,让p指向q,q指向它的next,直到q为空结点。
//链表逆置#include <iostream>#include<stdlib.h>using namespace std;struct node{ int x; struct node *next;};//顺序建表struct node *creatListShun(int lenth){ struct node *head,*t,*p; int i; head=(struct node *)malloc(sizeof(struct node)); head->next=NULL; t=head; for(i=0; i<lenth; i++) { p=(struct node *)malloc(sizeof(struct node)); p->x=i; p->next=NULL; t->next=p; t=p; } return head;}struct node *nizhi(struct node *head){ struct node *p,*q; p=head->next; head->next=NULL; q=p->next; while (p!=NULL) { p->next=head->next; head->next=p; p=q; if (q) q=q->next; } return head;}int main(){ struct node *head,*t; head=creatListShun(10);//顺序建链表 t=head->next; cout<<"顺序建链表 :"; while(t!=NULL) { cout<<t->x<<" "; t=t->next; } cout<<endl; head=nizhi(head);//链表逆置 t=head->next; cout<<"链表逆置 :"; while(t!=NULL) { cout<<t->x<<" "; t=t->next; } cout<<endl; return 0;}
0 0
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- Android代码规范
- oracle 相关sql杂
- Apache80指向tomcat8080
- 二叉树的相关操作(递归)
- 模板间调用成员函数指针
- 链表逆置
- BootStrap 教程 之 特点与组成(01)
- JVM运行机制
- Android app 中响应hardkey press event
- 分区表查询带分区条件,没有分区消除
- perl引用 笔记
- Hermes与开源的Solr、ElasticSearch的不同
- js未传入event参数时如何获取当前event(多浏览器)
- hdu 3037 Saving Beans 卢卡斯定理