文档介绍:湖南师范大学工程与设计学院数据结构实验报告姓名:熊富豪年级:2015级专业:计算机科学与技术学号:6任课教师:肖柳明开课时间:2016~2017学年第一学期实验(一)实验时间2016年12月8日星期四实验地点前栋403实验题目线性表的存储及操作实验目的掌握顺序存储结构和链式存储结构的特点;掌握常见算法。:已知两个按元素值有序的线性表A和B,编程实现:将A和B有序归并成一个按元素值有序的线性表,然后删除值相同的元素。:从键盘输入两个按元素值有序的线性表A和B的值;根据输入把数据元素分别以顺序存储结构和线性链表存储;有序归并成一个新的按元素值有序的线性表C;输出显示合并后的线性表C;分别在顺序存储结构和线性链表存储结构上删除值相同的元素,并显示删除后的线性表。(逻辑结构、存储结构):structNode{int*elem;intlength;intlistsize;}A,B,C;structnode{ intdata;structnode*next;}*HA,*HB,*HC;(类C语言+流程图):\先将两个表的元素从键盘输入,然后再将两个表相加,得到第三个表。在合并后的表中找到值相同的元素,将后面的元素前移以删除值相同的元素,最后将表的长度减1得到最终的结果。//顺序表LA,LB合为LCSqlistMergeList_sq(SqlistLa,SqlistLb,SqlistLc){ pa=,pb=,*pc; pa_last=+-1; pb_last=+-1; ==+; pc==(int*)malloc(*sizeof(int)); if(!)//分配失败 exit(0); while(pa<=pa_last&&pb<=pb_last){//判断La,Lb是否结尾 if(*pa<=*pb)//比较大小,影响插入的顺序*pc++=*pa++; else *pc++=*pb++; } while(pa<=pa_last)//可能存在没有插完的情况*pc++=*pa++; while(pb<=pb_last) *pc++=*pb++; returnLc;}单链表类C//合并链表La,Lb,LcLNode*MergeList_L(LinkListLa,LinkListLb,LinkListLc){ pa=La->next;pb=Lb->next; Lc=pc=La; while(pa&&pb){ if(pa->data<=pb->data){ pc->next=pa; pc=pa; pa=pa->next; } else{ pc->next=pb; pc=pb; pb=pb->next; } } pc->next=pa?pa:pb; free(Lb); returnLc;}(关键模块和语句加以注释说明):#include<>#include<>structNode{int*elem;intlength;intlistsize;}A,B,C;structnode{ intdata;structnode*next;}*HA,*HB,*HC;voiddel_order(){inti,j;for(i=0;i<-1;i++){ if([i]==[i+1]){ for(j=i+2;j<=-1;j++){ [j-1]=[j];}--;}}printf("\n删除后线性表C的值:\n");for(i=0;i<;i++){ printf("%d",[i]);}}intmerge_order(){inti=0,j=0,k=0;=+;=(int*)malloc(*sizeof(int));if(==NULL)return0;while(i<&&j<){if([i]<[j])[k++]=[i++];[k++]=[j++];}while(i<){[k++]=[i++];}while(j<){[k++]=[j++];}pri