资源描述:
《算法与数据结构实验报告模版项目一》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、算法与数据结构实训(验)报告班级:计算机3101姓名:吴华棉座号:41指导教师:林扬武成绩:项目一:线性表的应用一、实验目的:1、掌握线性表的特点;2、掌握线性表顺序存储结构和链式存储结构的基本运算;3、掌握线性链表的创建、插入、删除和显示线性表中元素等基本操作;二、实验内容:1、顺序表的应用有两个有序顺序表La和Lb,其数据元素均按从小到大的升序排列,编写一个算法将它们合并成一个顺序表Lc,并保持Lc中数据元素也按升序排列。2、链表的应用创建一个字符型的单链表,并设计一个菜单,可以分别实现链表的相关操作,例如插入、删除等三:程序源代码:1、顺序表合并-源代码:intIn
2、sert(Sqlist*L,inti,intx)//插入元素{intj;if(i<0
3、
4、i>L->length+1){printf("Error!");returnFALSE;}if(L->length>=MAXNUM-1){printf("overflow1");returnFALSE;}for(j=L->length;j>=i;j--)L->List[j+1];L->List[i]=x;L->length++;returnTRUE;}intDelete(SqlistL,inti)//删除元素{intj;if(i<0
5、
6、i>L.length){printf("Error
7、!");returnFALSE;}for(j=i+1;j<=L.length;j++)L.List[j-1]=L.List[j];L.length--;returnTRUE;7}voidMerge(SqlistLa,SqlistLb,Sqlist*Lc)//两个有序表合并{inti,j,k,a,b;intLa_length,Lb_length;/*表La,Lb的最大下标*/i=j=0;k=-1;La_length=Length(La)-1;Lb_length=Length(Lb)-1;Initiate(Lc);/*初始化表Lc*/while(i<=La_length&&j
8、<=Lb_length){a=Get(La,i);b=Get(Lb,j);if(a=0
9、)*/slnodetype*p;intj=-1;p=L;while(p!=NULL&&jnext;j++;}if(j!=i
10、
11、p==NULL)returnNULL;elsereturnp;}intLocate(slnodetype*L,charx){/*查找定位,查找成功返回该元素的序号,否则返回-1;*/slnodetype*p;inti=-1;p=L;while(p->next!=NULL&&p->data!=x){p=p->next;i++;}if(p==NULL
12、
13、p->data==x)returni;else7return-1;}intTrav
14、erse(slnodetype*L){/*遍历链表,输出链表的元素序列;*/slnodetype*p;inti=0;p=L;while(p->next!=NULL){p=p->next;i++;printf("%c",p->data);}returni;}intLength(slnodetype*L){slnodetype*p;inti=0;p=L;while(p->next!=NULL){i++;p=p->next;}returni;}四、结果:1、顺序表合并1)向两组线性表输入大于0的数据元素,其运行结果如图:则结果符合题意,答案正确。2)向两组线性表输入小于0的数据
15、元素,其运行结果如图:7则结果符合题意,答案正确。3)向两组线性表分别输入大于0或小于0的数据元素,其运行结果如图:则结果符合题意,答案正确。1、字符链表的操作首先程序运行主菜单如图所示:1)创建链表输入数据元素,并以#结束标志,其结果如图:72)在创建好的链表中插入数据元素,如果插入的位置小于0时,例如-1。其结果如图:如果插入位置在链表范围内,如在位置6处插入z。其结果如图:如果插入位置超出了链表范围之外,如在位置88处插入q。其结果如图:3)在创建好的链表中删除数据元素,如果删除一个链表内的数据元素,如10。其结果如图: