資源描述:
《1實(shí)驗(yàn)-順序表順序存儲(chǔ)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、實(shí)驗(yàn)一線性表(順序結(jié)構(gòu))—、實(shí)驗(yàn)?zāi)康?.掌握實(shí)現(xiàn)線性表的基本操作方法;2.掌握線性表的基本操作:建表、插入、刪除、輸出等運(yùn)算在順序存儲(chǔ)結(jié)構(gòu)的實(shí)現(xiàn);3.通過(guò)本次實(shí)習(xí)加深對(duì)高級(jí)語(yǔ)言C語(yǔ)言的使用(特別是函數(shù)參數(shù)、指針類型、鏈表的使用)。熟悉線性表的棊木運(yùn)算在兩種存儲(chǔ)結(jié)構(gòu)(順序結(jié)構(gòu)和鏈?zhǔn)浇Y(jié)構(gòu))上的實(shí)現(xiàn)。二、實(shí)驗(yàn)內(nèi)容線性表的基本操作:建表、插入、刪除、輸出等運(yùn)算在順序存儲(chǔ)結(jié)構(gòu)的實(shí)現(xiàn);三、實(shí)驗(yà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開(kāi)始“);)/*打印線性表(順序結(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請(qǐng)輸入線性表中數(shù)據(jù)的個(gè)數(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個(gè)結(jié)點(diǎn)前插入元素x(note:元素從1始計(jì)數(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*錯(cuò)了,請(qǐng)輸入正確的丫值“);return0;else{for(j=L->last;j>=i;j-)/*從笫i個(gè)元素起,每個(gè)元素后移一位*/L->data[j+l]=L->data[jJ;L->data[i]=x;L->last=L->last+1;}return(l);}/*04刪除第i個(gè)結(jié)點(diǎn),note:元素從0始計(jì)數(shù)*/intdellist(sequenlist*L,inti){if((i8、
9、(i>L->last))
10、/*如果輸入的i值超出范圍*/{printf(“錯(cuò)了,請(qǐng)輸入正確的丫值”);return0;}else{for(;ilast;i++)/*從第i+1個(gè)元素起,每個(gè)元素前移一位*/L->data[i]=L->data[i+1J;L?>last=L?>last?1;rcturn(l);}}/*05求線性表(順序結(jié)構(gòu))的長(zhǎng)度勺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))/*表為空或者位置不對(duì)*/{printf(n線性表為空,或者輸入的位置有錯(cuò)!”);returnFAILURE;returnL->data[pos];/咅09按值查找的定位函數(shù)犁intLocateList(sequenlist*L,data
16、typevalue){inti=0;if(L->last==-1)/*表為空*/{printf