资源描述:
《C语言数据结构线性表的基本操作实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验一线性表的基本操作一、实验目的与基本要求1.掌握数据结构中的一些基本概念。数据、数据项、数据元素、数据类型和数据结构,以及它们之间的关系。2.了解数据的逻辑结构和数据的存储结构之间的区别与联系;数据的运算与数据的逻辑结构的关系。3.掌握顺序表和链表的基本操作:插入、删除、查找以及表的合并等运算。4.掌握运用C语言上机调试线性表的基本方法。二、实验条件1.硬件:一台微机2.软件:操作系统和C语言系统三、实验方法确定存储结构后,上机调试实现线性表的基本运算。四、实验内容1.建立顺序表,基本操作包括:初始化,建立一个顺序存储的链表,输出顺序表,判断是否为空,取表中第i
2、个元素,定位函数(返回第一个与x相等的元素位置),插入,删除。2.建立单链表,基本操作包括:初始化,建立一个链式存储的链表,输出顺序表,判断是否为空,取表中第i个元素,定位函数(返回第一个与x相等的元素位置),插入,删除。3.假设有两个按数据元素值非递减有序排列的线性表A和B,均以顺序表作为存储结构。编写算法将A表和B表归并成一个按元素值非递增有序(允许值相同)排列的线性表C。(可以利用将B中元素插入A中,或新建C表)4.假设有两个按数据元素值非递减有序排列的线性表A和B,均以单链表作为存储结构。编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许值相
3、同)排列的线性表C。五、附源程序及算法程序流程图1.源程序(1)源程序(实验要求1和3)#include#include#include#defineLIST_INIT_SIZE100#defineLISTINCREMENT10typedefstructarr{34intelem;intlength;intlistsize;}Sqlist;voidmenu();//菜单voidInitList(Sqlistp);//创建线性表voidShowList(Sqlistp);//输出顺序线性表voidListDel
4、ete(Sqlistp,inti,int&e);//在顺序线性表中删除第i个元素,并用e返回其值voidListInsert(Sqlistp);//在顺序线性表中第i个元素前插入新元素evoidListEmpty(Sqlistp);//判断L是否为空表voidGetList(Sqlistp,inti,int&e);//用e返回L中第i个数据元素的值voidListInsert(Sqlistp,inti,inte);boolcompare(inta,intb);voidLocateElem(SqlistL,inte);//在顺序线性表L中查找第1个值与e满足compa
5、re()d元素的位序voidMergeList_L(SqlistLa,SqlistLb);//归并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("请输入插入的位序:");scanf("%d",&m);printf("请出入要插入的数:");scanf("%d",&x);ListInsert(&
6、La,m,x);break;case4:printf("请输入删除元素的位序:");scanf("%d",&m);ListDelete(&La,m,x);34printf("删除的元素为:%d",x);break;case5:printf("请输入要找的与线性表中相等的数:");scanf("%d",&m);LocateElem(&La,m);break;case6:printf("请输入查找的位序:");scanf("%d",&m);GetList(&La,m,x);printf("La中第%d个元素的值为%d",m,x);break;case
7、7:ShowList(&La);break;case8:InitList(&Lb);break;case9:MergeList_L(&La,&Lb);printf("归并成功!");break;}menu();scanf("%d",&n);}}/菜单/voidmenu(){printf("");printf("0.退出");printf("1.创建线性表La");printf("2.判断La是否为空表");printf("3.插入元素(La)");printf("4.删除元素(La)");printf("5.定位元