




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
/NUMPAGES35 实验一线性表的基本操作 一、实验目的与基本要求 1.掌握数据结构中的一些基本概念。数据、数据项、数据元素、数据类型和数据结构,以与它们之间的关系。 了解数据的逻辑结构和数据的存储结构之间的区别与联系;数据的运算与数据的逻辑结构的关系。 掌握顺序表和链表的基本操作:插入、删除、查找以与表的合并等运算。 掌握运用C语言上机调试线性表的基本方法。 二、实验条件 硬件:一台微机 软件:操作系统和C语言系统 三、实验方法 确定存储结构后,上机调试实现线性表的基本运算。 四、实验容 建立顺序表,基本操作包括:初始化,建立一个顺序存储的链表,输出顺序表,判断是否为空,取表中第i个元素,定位函数(返回第一个与x相等的元素位置),插入,删除。 建立单链表,基本操作包括:初始化,建立一个链式存储的链表,输出顺序表,判断是否为空,取表中第i个元素,定位函数(返回第一个与x相等的元素位置),插入,删除。 假设有两个按数据元素值非递减有序排列的线性表A和B,均以顺序表作为存储结构。编写算法将A表和B表归并成一个按元素值非递增有序(允许值一样)排列的线性表C。(可以利用将B中元素插入A中,或新建C表) 假设有两个按数据元素值非递减有序排列的线性表A和B,均以单链表作为存储结构。编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许值一样)排列的线性表C。 五、附源程序与算法程序流程图 1.源程序 (1)源程序(实验要求1和3) #include<stdio.h> #include<malloc.h> #include<stdlib.h> #defineLIST_INIT_SIZE100 #defineLISTINCREMENT10 typedefstructarr { int*elem; intlength; intlistsize; }Sqlist; voidmenu();//菜单 voidInitList(Sqlist*p); //创建线性表 voidShowList(Sqlist*p); //输出顺序线性表 voidListDelete(Sqlist*p,inti,int&e); //在顺序线性表中删除第i个元素,并用e返回其值 voidListInsert(Sqlist*p); //在顺序线性表中第i个元素前插入新元素e voidListEmpty(Sqlist*p); //判断L是否为空表 voidGetList(Sqlist*p,inti,int&e); //用e返回L中第i个数据元素的值 voidListInsert(Sqlist*p,inti,inte); boolcompare(inta,intb); voidLocateElem(Sqlist*L,inte); //在顺序线性表L中查找第1个值与e满足compare()d元素的位序 voidMergeList_L(Sqlist*La,Sqlist*Lb);//归并 voidmain() { SqlistLa; SqlistLb; intn,m,x; menu(); scanf("%d",&n); while(n) { switch(n) { case0:;break; case1: InitList(&La);break; case2: ListEmpty(&La);break; case3: printf("请输入插入的位序:\n"); scanf("%d",&m); printf("请出入要插入的数:\n"); scanf("%d",&x); ListInsert(&La,m,x);break; case4: printf("请输入删除元素的位序:\n"); scanf("%d",&m); ListDelete(&La,m,x); printf("删除的元素为:%d\n",x);break; case5: printf("请输入要找的与线性表中相等的数:\n"); scanf("%d",&m); LocateElem(&La,m);break; case6: printf("请输入查找的位序:\n"); scanf("%d",&m); GetList(&La,m,x); printf("La中第%d个元素的值为%d\n",m,x);break; case7: ShowList(&La);break; case8: InitList(&Lb);break; case9: MergeList_L(&La,&

17****21
实名认证
内容提供者


最近下载