資源描述:
《c語言數(shù)據(jù)結(jié)構(gòu)線性表的基本操作實驗報告》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、.實驗一線性表的基本操作一、實驗?zāi)康呐c基本要求1.掌握數(shù)據(jù)結(jié)構(gòu)中的一些基本概念。數(shù)據(jù)、數(shù)據(jù)項、數(shù)據(jù)元素、數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu),以及它們之間的關(guān)系。2.了解數(shù)據(jù)的邏輯結(jié)構(gòu)和數(shù)據(jù)的存儲結(jié)構(gòu)之間的區(qū)別與聯(lián)系;數(shù)據(jù)的運算與數(shù)據(jù)的邏輯結(jié)構(gòu)的關(guān)系。3.掌握順序表和鏈表的基本操作:插入、刪除、查找以及表的合并等運算。4.掌握運用C語言上機(jī)調(diào)試線性表的基本方法。二、實驗條件1.硬件:一臺微機(jī)2.軟件:操作系統(tǒng)和C語言系統(tǒng)三、實驗方法確定存儲結(jié)構(gòu)后,上機(jī)調(diào)試實現(xiàn)線性表的基本運算。四、實驗內(nèi)容1.建立順序表,基本操作包括:初始
2、化,建立一個順序存儲的鏈表,輸出順序表,判斷是否為空,取表中第i個元素,定位函數(shù)(返回第一個與x相等的元素位置),插入,刪除。2.建立單鏈表,基本操作包括:初始化,建立一個鏈?zhǔn)酱鎯Φ逆湵恚敵鲰樞虮恚袛嗍欠駷榭?,取表中第i個元素,定位函數(shù)(返回第一個與x相等的元素位置),插入,刪除。3.假設(shè)有兩個按數(shù)據(jù)元素值非遞減有序排列的線性表A和B,均以順序表作為存儲結(jié)構(gòu)。編寫算法將A表和B表歸并成一個按元素值非遞增有序(允許值相同)排列的線性表C。(可以利用將B中元素插入A中,或新建C表)4.假設(shè)有兩個按數(shù)據(jù)元素
3、值非遞減有序排列的線性表A和B,均以單鏈表作為存儲結(jié)構(gòu)。編寫算法將A表和B表歸并成一個按元素值遞減有序(即非遞增有序,允許值相同)排列的線性表C。五、附源程序及算法程序流程圖1.源程序(1)源程序(實驗要求1和3)#include#include#include#defineLIST_INIT_SIZE100#defineLISTINCREMENT10typedefstructarr{...int*elem;intlength;intlistsiz
4、e;}Sqlist;voidmenu();//菜單voidInitList(Sqlist*p);//創(chuàng)建線性表voidShowList(Sqlist*p);//輸出順序線性表voidListDelete(Sqlist*p,inti,int&e);//在順序線性表中刪除第i個元素,并用e返回其值voidListInsert(Sqlist*p);//在順序線性表中第i個元素前插入新元素evoidListEmpty(Sqlist*p);//判斷L是否為空表voidGetList(Sqlist*p,inti,in
5、t&e);//用e返回L中第i個數(shù)據(jù)元素的值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){
6、switch(n){case0:;break;case1:InitList(&La);break;case2:ListEmpty(&La);break;case3:printf("請輸入插入的位序:");scanf("%d",&m);printf("請出入要插入的數(shù):");scanf("%d",&x);ListInsert(&La,m,x);break;case4:printf("請輸入刪除元素的位序:");scanf("%d",&m);ListDelete(&La,m,x);...print
7、f("刪除的元素為:%d",x);break;case5:printf("請輸入要找的與線性表中相等的數(shù):");scanf("%d",&m);LocateElem(&La,m);break;case6:printf("請輸入查找的位序:");scanf("%d",&m);GetList(&La,m,x);printf("La中第%d個元素的值為%d",m,x);break;case7:ShowList(&La);break;case8:InitList(&Lb);break;case9:M
8、ergeList_L(&La,&Lb);printf("歸并成功!");break;}menu();scanf("%d",&n);}}/*菜單*/voidmenu(){printf("********************");printf("0.退出");printf("1.創(chuàng)建線性表La");printf("2.判斷La是否為空表");printf("3.插入元素(La)");pr