《不带头结点的单链表(共5页).doc》由会员分享,可在线阅读,更多相关《不带头结点的单链表(共5页).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上上 海 电 力 学 院数据结构 实验报告(2014/2015 学年第2学期)课程编号 课程名称 数据结构 院 (系) 专 业 班 级 学 号 姓 名 实验名称 实验2 不带头结点的单链表 任课老师 卢芳芳 专心-专注-专业实验2 不带头结点的单链表1【实验目的与要求】1、熟练掌握动态链表结构及有关算法的设计方法。2、理解不带表头结点的单链表的特点,掌握其基本操作。3、熟练掌握运用不带头结点链表表示特定形式的数据的方法,并设计出有关算法。2【实验内容和步骤】已知不带头结点的链表结构定义及头插法建表、尾插法建表和打印链表等函数定义如下(详见slnklist.h文件),基于
2、该文件完成实验题1-实验4.#include #include /*/* 链表实现的头文件,文件名slnklist.h */*/ typedef int datatype; typedef struct link_node datatype info; struct link_node *next; node;typedef node *linklist;/*/*函数名称:creatbystack() */*函数功能:头插法建立单链表 */*/linklist creatbystack() linklist head,s; datatype x; head=NULL; printf(请输入若干
3、整数序列:n); scanf(%d,&x); while (x!=0)/*以0结束输入*/ s=(linklist)malloc(sizeof(node); /*生成待插入结点*/ s-info=x; s-next=head;/*将新结点插入到链表最前面*/ head=s; scanf(%d,&x); return head;/*返回建立的单链表*/*/*函数名称:creatbyqueue() */*函数功能:尾插法建立单链表 */*/linklist creatbyqueue() linklist head,r,s; datatype x; head=r=NULL; printf(请输入若干
4、整数序列:n); scanf(%d,&x); while (x!=0) /*以0结束输入*/ s=(linklist)malloc(sizeof(node); s-info=x; if (head=NULL)/*将新结点插入到链表最后面*/ head=s; else r-next=s; r=s; scanf(%d,&x); if (r) r-next=NULL; return head;/*返回建立的单链表*/*/*函数名称:print() */*函数功能:输出不带头结点的单链表 */*/void print(linklist head) linklist p; int i=0; p=head
5、; printf(List is:n); while(p) printf(%5d,p-info); p=p-next; i+; if (i%10=0) printf(n); printf(n);/*/*函数名称:delList() */*函数功能:释放不带头结点的单链表 */*/void delList(linklist head) linklist p=head; while (p) head=p-next; free(p); p=head; 1. 编写函数lnklist delx(linklist head, datatype x),删除不带头结点单链表head中第一个值为x 的结点。并构
6、造测试用例进行测试。l 程序源代码(注意添加注释)l 运行结果(直接截取结果图)2. 线性表(a1, a2, a3, , an)采用不带头结点的单链表存储,请设计算法函数linklist reverse1(linklist head)和void reverse2(linklist *head)将不带头结点的单链表head倒置,使表变成(an, an-1, an-2, , a2, a1). 。并构造测试用例进行测试。l 程序源代码(注意添加注释)l 运行结果(直接截取结果图)3. 假设不带头结点的单链表head是升序排列的,设计算法函数linklist insert(linklist head,
7、datatype x),将值为x的结点插入到链表head中,并保持链表有序性。分别构造插入到表头、表中和表尾三种情况的测试用例进行测试。l 程序源代码(注意添加注释)l 运行结果(直接截取结果图)4. 编写函数lnklist delallx(linklist head, datatype x),删除不带头结点单链表head中所有值为x 的结点。并构造测试用例进行测试。l 程序源代码(注意添加注释)l 运行结果(直接截取结果图)3【实验遇到的问题及解决方法】4【实验结论与体会】1、 结合上课内容,写出程序,并调试程序,要给出测试数据和实验结果。2、 添加适当注释,注意书写的层次结构。3、 整理上机步骤,总结经验和体会。4、 上交实验报告