第四周项目1—建立单链表
2015-09-21 17:59
316 查看
问题:
运行结果:
知识点总结:
学习了链表的两个建立方法。
学习心得:
对于链表的建立虽然理解但还是不熟悉,要勤加练习。
/* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目1.cbp *作 者:李艺 *完成日期:2015年9月21日 *版 本 号:v1.0 * *问题描述:定义单链表存储结构,用头插法和尾插法建立单链表,并显示建立好以后的结果。 *输入描述:无 *程序输出:输出头插法尾插发链表 */ #include <stdio.h> #include <malloc.h> typedef int ElemType; typedef struct LNode //定义单链表结点类型 { ElemType data; struct LNode *next; //指向后继结点 } LinkList; void CreateListF(LinkList *&L,ElemType a[],int n);//头插法建立单链表 void CreateListR(LinkList *&L,ElemType a[],int n);//尾插法建立单链表 void DestroyList(LinkList *&L); //销毁单链表 void DispList(LinkList *L) ;//输出单链表 int main() { LinkList *L1, *L2; ElemType a[8]= {7, 9, 8, 2, 0, 4, 6, 3}; CreateListF(L1, a, 8); printf("头插法建表结果:"); DispList(L1); CreateListR(L2, a, 6); printf("尾插法建表结果:"); DispList(L2); DestroyList(L1); DestroyList(L2); return 0; } //在下面写自定义函数(实现相关算法)的代码 void CreateListF(LinkList *&L,ElemType a[],int n)//头插法建立单链表 { LinkList *s,*r; int i; L=(LinkList *)malloc(sizeof(LinkList));//创建头节点 r=L; //r始终指向尾节点,开始时指向头结点 for (i=0;i<n;i++) //循环建立数据节点 { s=(LinkList *)malloc(sizeof(LinkList));//创建新结点 s->data=a[i]; //创建数据节点*s r->next=s; //将*s插入到*r之后 r=s; } r->next=NULL; //尾节点next域置于NULL } 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 DestroyList(LinkList *&L) //销毁单链表 { LinkList *p=L,*q=p->next; //p指向*q的前驱节点 while (q!=NULL) //循环判断 逐个销毁 { free(p); //释放*p节点 p=q; //p、q同步后移一个节点 q=p->next; //再赋值 } free(p); //此时q为NULL,p指向尾结点,释放它 } void DispList(LinkList *L) //输出单链表 { LinkList *p=L->next; //p指向开始节点 while (p!=NULL) //p不为NULL,输出*p节点的date域 { printf("%d ",p->data); p=p->next; //p移向下一个节点 } printf("\n"); }
运行结果:
知识点总结:
学习了链表的两个建立方法。
学习心得:
对于链表的建立虽然理解但还是不熟悉,要勤加练习。
相关文章推荐
- xcode 7 上传版本出现 unexpected cfbundleexecutable key
- 移动环境下push技术开发(01-androidpn环境的配置)
- cmd批处理常用符号详解
- WinGDB远程调试FreeBSD程序无响应的解决办法
- 伍、ajax
- [9-13]Shell系列4――循环结构for、while、until及跳出循环
- hadoop web 端口安全认证
- 网络广告防作弊技巧大全
- iOS9网络适配_改用更安全的HTTPS
- Unity3D之Mecanim动画系统学习笔记(三):Animation View
- 折叠效果实现
- TLV 格式及编解码示例
- js 正则 元字符转义
- 如何让PHP程序自动执行(后台)
- xCode 7 编译出现错误:does not contain bitcode 解决办法
- Android获取通话记录
- 用Java实现 atoi 和 itoa
- 例子:广告图片在网页中飘动,碰到网页边沿改变漂移方向
- js urlencode , encodeURIComponent
- androidpn的学习研究(二)androidpn-server服务端启动过程的理解分析