预览加载中,请您耐心等待几秒...
在线预览结束,喜欢就下载吧,查找使用更方便
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
/*实验一:线性表的顺序存储结构(实验性质:验证性实验)设计并实现以下算法:有两张非递增有序的线性表A和B,采用顺序存储结构,将这两张表合并成C表,要求C表是非递减有序的,然后删除C表中值相同的多余元素。*/#include"stdio.h"#include"stdlib.h"typedefstruct{int*elem;intlen;intlistsize;}sqlist;sqlistcreate()//创建一个线性表并排序(从小到大){sqlistL;inti=0,j,t,n,k;printf("输入元素个数:");scanf("%d",&n);L.len=L.listsize=n;L.elem=(int*)malloc(n*sizeof(int));printf("输入元素:\n");for(i=0;i<n;i++)\{scanf("%d",L.elem+i);}for(j=0;j<n-1;j++)for(k=0;k<n-j-1;k++)if(L.elem[k]>L.elem[k+1]){t=L.elem[k];L.elem[k]=L.elem[k+1];L.elem[k+1]=t;}printf("排序后的线性表:\n");for(i=0;i<n;i++)printf("%d\t",L.elem[i]);printf("\n\n\n");returnL;}voidhebing(sqlistLa,sqlistLb,sqlist&Lc)//合并线性表并逆序输出{int*pa,*pb,*pc,*pa1,*pb1,i=0,j;pa=La.elem;pb=Lb.elem;Lc.listsize=Lc.len=La.len+Lb.len;pc=Lc.elem=(int*)malloc(Lc.listsize*sizeof(int));if(!Lc.elem)exit(0);pa1=La.elem+La.len-1;pb1=Lb.elem+Lb.len-1;while(pa<=pa1&&pb<=pb1){if(*pa<*pb)*pc++=*pa++;else*pc++=*pb++;i++;}while(pa<=pa1)*pc++=*pa++;while(pb<=pb1)*pc++=*pb++;printf("合并后的线性表:\n");for(j=0;j<=i;j++)printf("%d\t",Lc.elem[j]);printf("\n\n");printf("逆序的线性表:\n");for(j=i;j>=0;j--)printf("%d\t",Lc.elem[j]);printf("\n\n");}voidshanchu(sqlist&L)//删除相同的元素{inti,j=0;for(i=0;i<L.len;i++){if(L.elem[i]==L.elem[i+1]){for(j=i+1;j<L.len;j++)L.elem[j]=L.elem[j+1];L.len--;i--;}}printf("删除相同元素后的线性表:\n");for(i=0;i<L.len;i++)printf("%d\t",L.elem[i]);printf("\n\n");}voidmain(){sqlistLa,Lb,Lc;La=create();Lb=create();hebing(La,Lb,Lc);shanchu(Lc);}