资源描述:
《实验2-不带头结点的单链表.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、上海电力学院数据结构实验报告(2014/2015学年第2学期)课程编号课程名称数据结构院(系)专业班级学号姓名实验名称实验2不带头结点的单链表任课老师卢芳芳实验2不带头结点的单链表1【实验目的与要求】1、熟练掌握动态链表结构及有关算法的设计方法。2、理解不带表头结点的单链表的特点,掌握其基本操作。3、熟练掌握运用不带头结点链表表示特定形式的数据的方法,并设计出有关算法。2【实验内容和步骤】已知不带头结点的链表结构定义及头插法建表、尾插法建表和打印链表等函数定义如下(详见slnklist.h文件),基于该文件完成实验题1-实验4.#include#include<
2、stdlib.h>/**************************************//*链表实现的头文件,文件名slnklist.h*//**************************************/typedefintdatatype;typedefstructlink_node{datatypeinfo;structlink_node*next;}node;typedefnode*linklist;/**********************************//*函数名称:creatbystack()*//*函数功能:头插法建立单链表*
3、//**********************************/linklistcreatbystack(){linklisthead,s;datatypex;head=NULL;printf("请输入若干整数序列:");scanf("%d",&x);while(x!=0)/*以0结束输入*/{s=(linklist)malloc(sizeof(node));/*生成待插入结点*/s->info=x;s->next=head;/*将新结点插入到链表最前面*/head=s;scanf("%d",&x);}returnhead;/*返回建立的单链表*/}/*******
4、***************************//*函数名称:creatbyqueue()*//*函数功能:尾插法建立单链表*//**********************************/linklistcreatbyqueue(){linklisthead,r,s;datatypex;head=r=NULL;printf("请输入若干整数序列:");scanf("%d",&x);while(x!=0)/*以0结束输入*/{s=(linklist)malloc(sizeof(node));s->info=x;if(head==NULL)/*将新结点插入到链
5、表最后面*/head=s;elser->next=s;r=s;scanf("%d",&x);}if(r)r->next=NULL;returnhead;/*返回建立的单链表*/}/**********************************//*函数名称:print()*//*函数功能:输出不带头结点的单链表*//**********************************/voidprint(linklisthead){linklistp;inti=0;p=head;printf("Listis:");while(p){printf("%5d",p->inf
6、o);p=p->next;i++;if(i%10==0)printf("");}printf("");}/**********************************//*函数名称:delList()*//*函数功能:释放不带头结点的单链表*//**********************************/voiddelList(linklisthead){linklistp=head;while(p){head=p->next;free(p);p=head;}}1.编写函数lnklistdelx(linklisthead,datatypex),删除不带头
7、结点单链表head中第一个值为x的结点。并构造测试用例进行测试。l程序源代码(注意添加注释)l运行结果(直接截取结果图)2.线性表(a1,a2,a3,…,an)采用不带头结点的单链表存储,请设计算法函数linklistreverse1(linklisthead)和voidreverse2(linklist*head)将不带头结点的单链表head倒置,使表变成(an,an-1,an-2,…,a2,a1).。并构造测试用例进行测试。l程序源代码(注意添加注释)l运行结果(直接截取结果