资源描述:
《创建链表和链表操作实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据结构实验报告报告名称创建链表和链表操作专业网络工程班级1001学号9姓名张剑指导教师陈淑红李珍辉黄哲2012年5月4日一、实验目的:掌握线性表的基本操作:插入、删除、查找以及线性表合并等运算在顺序存储结构和链接存储结构上的运算。二、实验内容与基本要求:实验内容:1.创建单链表2.在链表上进行插入、删除操作;3.设计一个程序,用两个单链表分别表示两个集合,并求出这两个集合的并集。实验要求:1.在上机前写出全部源程序;2.能在机器上正确运行程序;3.用户界面友好;三、概要设计:1.单链表的存储结构:teypedefstructLNode{ElemTypedate;structLNond*ne
2、xt;}LNode*LinkList;2.单链表的插入操作:StatusListTnsert-L(LinkLIst&L,inti,ElemTypee){//再带头结点的单链线性表L中的第i个位置之前插入元素eP=l;j=0;While(p&&jnext;++j;}//寻找第i-1个结点if(!p
3、
4、j>i-1)returnERROR;//i小小于1或者大于表长+1s=(LinkList)malloc(sizeof(LNode));//生成新结点s->date=e;s->next=p->next;//插入L中p->next=s;returnok;}//ListTnsert
5、L3.单链表的删除操作:StatusListDelete-L(LinkLIst&L,inti,ElemType&e){//在带头结点单链线性表L中,删除低i个元素,并由e返回其值p=l;j=0;while(p->next&&jnext;++j;}if(!(p->next)
6、
7、j>i-1)returnERROR;//删除位置不合理q=p->next;p->next=q->next;//删除并释放结点e=q->datefree(q);returnOK;}//ListDelete-L4.链表的合并操作:voidMergeList-L(Lin
8、kList&La,LinkList&Lb,LinkList&Lc){//已知单链表La和Lb的元素值//合并单链表La和Lb,得到新的单链表Lcpa=La->next;pb=Lb->next;lc=pc=La;//用La的头结点作为Lc的头结点while(pa&&pb){if(pa->date<=pb->date){pc->next=pa;pc=pa;pa=pa->next;}else{pc->next=pb;pc=pb;pb=pb->next;}}Pc->next=pa?pa:pb;//插入剩余段free(Lb);//释放Lb头结点}//MergeList-L四、详细设计:#include
9、#include#include#includetypedefintstatus;typedefcharElemType;typedefstructLnode//定义链表结点类型{ElemTypedata;structLnode*next;}Lnode,*Linklist;statusinitlist(Linklist*L){//单链表的初始化*L=(Lnode*)malloc(sizeof(Lnode));//创建头结点(*L)->next=NULL;return1;}statusCreatelist(Linkl
10、istL){//创建自己规定长度的单链表Lnode*p,*q;inti,j=1,n;ElemTypem,M;q=L;printf("请输入你要输入单链中元素的个数");scanf("%d",&n);scanf("%c",&m);//回车缓冲区for(i=n;i>0;i--){p=(Lnode*)malloc(sizeof(Lnode));printf("请输入%2.1d个元素:",j);scanf("%ld",&M);scanf("%c",&m);//回车缓冲区p->data=M;p->next=q->next;q->next=p;q=p;j++;}return1;}statusList
11、insert(LinklistL,inti,ElemTypee){//向单链表指定位置插入一个元素intj=0;Lnode*p=L,*s;while(p&&jnext;++j;}if(!p
12、
13、j>i-1){printf("输入错误!");return0;}s=(Lnode*)malloc(sizeof(Lnode));s->data=e;s->next=p->next;p->next