資源描述:
《1實驗-順序表順序存儲》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在工程資料-天天文庫。
1、實驗一線性表(順序結(jié)構(gòu))—、實驗目的1.掌握實現(xiàn)線性表的基本操作方法;2.掌握線性表的基本操作:建表、插入、刪除、輸出等運算在順序存儲結(jié)構(gòu)的實現(xiàn);3.通過本次實習加深對高級語言C語言的使用(特別是函數(shù)參數(shù)、指針類型、鏈表的使用)。熟悉線性表的棊木運算在兩種存儲結(jié)構(gòu)(順序結(jié)構(gòu)和鏈式結(jié)構(gòu))上的實現(xiàn)。二、實驗內(nèi)容線性表的基本操作:建表、插入、刪除、輸出等運算在順序存儲結(jié)構(gòu)的實現(xiàn);三、實驗代碼/咅00:基本信息定義*/#include"stdio.h"#include"malloc.h"#defineSUCCESS1#defineFAILURE0#dcfinc
2、null0#definemaxsize100typedefintdatatype;typedefstruct/*定義線性表(順序結(jié)構(gòu))數(shù)據(jù)類型*/{datatypedatafmaxsize];intlast;[sequenlist;intn;/*定義功能選擇菜單函數(shù)引voidprint(){piintf(”???■線性表(順序結(jié)構(gòu))的基本操作???An”);printf(H開始“);)/*打印線性表(順序結(jié)構(gòu))*/voidprintout(sequenlist*L){inti;for(i=1;i<=L->last;i++)printfC'[%d]”
3、,i);printf(Hn);for(i=l;i<=L->last;i++)printf(u%6du,L->data[i]);printf(Hn);/*01線性表(順序結(jié)構(gòu))的初始化*/intlnitList(sequenlist*L){L=(scqucnlist*)malloc(sizeof(sequenlist));if(!L){returnFAILURE;elseL->last=-1;returnSUCCESS;/*02創(chuàng)建線性表(順序結(jié)構(gòu))*/voidcreatlist(sequenlist*L){inti;inttmp;printfC
4、1請輸入線性表中數(shù)據(jù)的個數(shù):”);scanf(”%d",&n);for(i=1;i<=n;i++){printf("data[%dj=",i);fflush(stdin);/*清除掉鍵盤緩沖區(qū)*/scanf("%d”,&tmp);L->data[i]=tmp;}L->last=n;}/*03在第i個結(jié)點前插入元素x(note:元素從1始計數(shù))*/intinscrt(scqucnlist*L,datatypex,inti){intj;訐(L->last==maxsize)/*如果原線性表(順序結(jié)構(gòu))己經(jīng)滿了*/{printf(”線性表(順序結(jié)構(gòu))已滿
5、“);return0;}elseif((i6、
7、(i>L->last+1))/*如果輸入的i值超岀范圍引{printfC*錯了,請輸入正確的丫值“);return0;else{for(j=L->last;j>=i;j-)/*從笫i個元素起,每個元素后移一位*/L->data[j+l]=L->data[jJ;L->data[i]=x;L->last=L->last+1;}return(l);}/*04刪除第i個結(jié)點,note:元素從0始計數(shù)*/intdellist(sequenlist*L,inti){if((i8、
9、(i>L->last))
10、/*如果輸入的i值超出范圍*/{printf(“錯了,請輸入正確的丫值”);return0;}else{for(;ilast;i++)/*從第i+1個元素起,每個元素前移一位*/L->data[i]=L->data[i+1J;L?>last=L?>last?1;rcturn(l);}}/*05求線性表(順序結(jié)構(gòu))的長度勺intCountList(sequenlist*L){returnL->last;}/*06清空線性表(順序結(jié)構(gòu))*/voidClearList(sequenlist*L){L->last=-1;}/*07判斷線性表(順序結(jié)
11、構(gòu))是否為空引/*boolListIsEmpty(sequenlist*L){returnL->last==-1;}*//*08按位直取線性表(順序結(jié)構(gòu))屮元索*/datatypeGetElem(sequenlist*L,intpos){if((L->last==-1)
12、
13、(pos<1)
14、
15、(pos>L->last))/*表為空或者位置不對*/{printf(n線性表為空,或者輸入的位置有錯!”);returnFAILURE;returnL->data[pos];/咅09按值查找的定位函數(shù)犁intLocateList(sequenlist*L,data
16、typevalue){inti=0;if(L->last==-1)/*表為空*/{printf