单链表应用(一)逆置
来源:互联网 发布:ipad免越狱软件 编辑:程序博客网 时间:2024/06/05 08:47
代码部分:
#include <stdio.h>#include <malloc.h>typedef int ElemType; typedef struct LNode //定义单链表结点类型 { ElemType data; struct LNode *next; //指向后继结点 } LinkList; void Reverse(LinkList *&L){ LinkList *p=L->next,*q; L->next=NULL; while (p!=NULL) //扫描所有的结点 { q=p->next; //让q指向*p结点的下一个结点 p->next=L->next; //总是将*p结点作为第一个数据结点 L->next=p; p=q; //让p指向下一个结点 }}void CreateListR(LinkList *&L,ElemType a[],int n)//尾插法建立单链表 { LinkList *s,*r; int i; L=(LinkList *)malloc(sizeof(LinkList)); //创建头结点 L->next=NULL; r=L; //r始终指向终端结点,开始时指向头结点 for (i=0; i<n; i++) { s=(LinkList *)malloc(sizeof(LinkList));//创建新结点 s->data=a[i]; r->next=s; //将*s插入*r之后 r=s; } r->next=NULL; //终端结点next域置为NULL } void DispList(LinkList *L) //输出单链表 { LinkList *p=L->next; while (p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n"); } void DestroyList(LinkList *&L) //销毁单链表 { LinkList *p=L,*q=p->next; while (q!=NULL) { free(p); p=q; q=p->next; } free(p); //此时q为NULL,p指向尾结点,释放它 } int main(){ LinkList *L; ElemType a[]= {1,3,5,7, 2,4,8,10}; CreateListR(L,a,8); printf("L:"); DispList(L); Reverse(L); printf("逆置后L: "); DispList(L); DestroyList(L); return 0;}结果:
感受:好累。
0 0
- 单链表应用(一)逆置
- CodeSmith应用(一)
- TreeView应用(一)
- 应用GeoServer(一)
- Yii应用(一)
- shell 应用(一)
- 反射应用(一)
- CodeSmith应用(一)
- AJAX应用(一)
- static应用(一)
- JavaSocket应用(一)
- 多线程应用(一)
- 应用层(一)
- SpringSecurity应用(一)
- SpringSecurity应用(一)
- springSecurity应用(一)
- maven应用(一)
- Binding应用(一)
- 测试1005
- Android学习笔记之游标访问SQLite数据
- UVA_400: Unix ls
- 二分+树上乱搞 zoj3820 Building Fire Stations
- php addslashes()函数
- 单链表应用(一)逆置
- 比较幸运的收到了两份offer
- typedef和#define的用法与区别
- leetcode | 3Sum
- 解析Json数据并缓存图片到sdcard
- java中Map,List与Set的区别
- 【机器学习】加州理工学院公开课——机器学习与数据挖掘 1.学习问题
- C/C++基本输入输出函数
- BZOJ3784 树分治、RMQ~~