第四周项目一
2015-09-21 16:30
351 查看
问题及代码
运行结果
知识点总结:
头插法和尾插法是数据插入的最基本的方法,通过节点的后推实现头插法和尾插法,头插法是将新的节点放到前面,而尾插法是放到后面。并且销毁与输出也是最基本的算法。
学习心得:对于不确定的方法,若不熟悉,可以使用画节点的方式来让自己更清晰得理解。
/*Copyright(c)2015,烟台大学计算机学院 *All right reserved. *文件名称:头插法和尾插法.cpp *作者:李浩 *完成日期;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; int i; L=(LinkList *)malloc(sizeof(LinkList)); L->next=NULL; for (i=0; i<n; i++) { s=(LinkList *)malloc(sizeof(LinkList)); s->data=a[i]; s->next=L->next; L->next=s; } } 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; while (q!=NULL) { free(p); p=q; q=p->next; } free(p); //此时q为NULL,p指向尾结点,释放它 } void DispList(LinkList *L) //输出单链表 { LinkList *p=L->next; while (p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n"); }
运行结果
知识点总结:
头插法和尾插法是数据插入的最基本的方法,通过节点的后推实现头插法和尾插法,头插法是将新的节点放到前面,而尾插法是放到后面。并且销毁与输出也是最基本的算法。
学习心得:对于不确定的方法,若不熟悉,可以使用画节点的方式来让自己更清晰得理解。
相关文章推荐
- Spring 事务管理
- 【Android笔记】执行命令行语句
- 开源中国源码学习UI篇(一)之FragmentTabHost的使用分析
- mysql编译问题集
- 常见SQL注入函数
- 【Android笔记】执行命令行语句
- javascript中的prototype和constructor
- 【碰撞检测】
- 第3周实践项目-3
- H5学习之旅-xhtml语法(15)
- 第三周项目3-求集合并集
- Android新开发语言Sky:取代Java 告别卡顿
- 第四周--建设“单链表”算法库
- 第四周—项目1 建立单链表
- H5学习之旅-xhtml语法(15)
- H5学习之旅-xhtml语法(15)
- 分布式学习的故事
- 数据结构顺序查找与二分法
- select、poll、epoll之间的区别总结[整理]
- 在Java应用中使用Json