資源描述:
《線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu).doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、石家莊經(jīng)濟(jì)學(xué)院實(shí)驗(yàn)報(bào)告學(xué)院:信息工程學(xué)院專業(yè):計(jì)算機(jī)信息工程學(xué)院計(jì)算機(jī)實(shí)驗(yàn)中心制《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告姓名張文楚學(xué)號(hào)409109070515日期2011.4.17-8節(jié)實(shí)驗(yàn)室計(jì)算機(jī)基礎(chǔ)實(shí)驗(yàn)室指導(dǎo)教師張有華設(shè)備編號(hào)實(shí)驗(yàn)題目實(shí)驗(yàn)三線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)一實(shí)驗(yàn)內(nèi)容1.進(jìn)一步熟悉C語(yǔ)言的上機(jī)環(huán)境,掌握C語(yǔ)言的基本結(jié)構(gòu)。2.會(huì)定義線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。3.熟悉對(duì)單鏈表的一些基本操作(建表、插入、刪除等)和具體的函數(shù)定義。二實(shí)驗(yàn)?zāi)康恼莆真準(zhǔn)酱鎯?chǔ)結(jié)構(gòu)的特點(diǎn),了解、掌握并實(shí)現(xiàn)單鏈表的常用的基本算法。三需求設(shè)計(jì)線性表抽象數(shù)據(jù)類型的描述及實(shí)現(xiàn)ADTList{數(shù)據(jù)對(duì)象:數(shù)據(jù)關(guān)系:基本操作:構(gòu)造一個(gè)空的線性表LInitL
2、ist();銷毀線性表LDestroyList();將L重置為空表ClearList();判斷L是否為空ListEmpty();求表長(zhǎng)ListLength();查找元素LocateElem();求前驅(qū)PriorElem();求后繼NextElem();插入元素ListInsert();刪除元素ListDelete();元素調(diào)用visit()函數(shù)ListTraverse(L,visit())}ADTList;程序具體實(shí)現(xiàn)要求:1.創(chuàng)建一個(gè)線性表2.能輸出所有數(shù)據(jù)元素3.能求線性表長(zhǎng)度4.能插入刪除元素5.能查找元素6.能求元素的前驅(qū)和后繼7.用戶操作界面如下:******************
3、*****************1.構(gòu)造線性表*2.插入元素*3.刪除元素*4.查找元素*5.顯示表長(zhǎng)*6.求后繼*7.求前驅(qū)*8.輸出所有元素*0.結(jié)束程序運(yùn)行***********************************請(qǐng)輸入您的選擇(0,1,...,8):四詳細(xì)設(shè)計(jì)步驟1:給出線性表的抽象數(shù)據(jù)類型的定義。ADTList{數(shù)據(jù)對(duì)象:數(shù)據(jù)關(guān)系:基本操作:InitList(&L);操作結(jié)果:構(gòu)造一個(gè)空的線性表L。DestroyList(&L)初始條件:線性表L已存在。操作結(jié)果:銷毀線性表L。ClearList(&L)初始條件:線性表L已存在。操作結(jié)果:將L重置為空表。ListEmpt
4、y(L)初始條件:線性表L已存在。操作結(jié)果:若L為空表,則返回TRUE,否則返回FALSE。ListLength(L)初始條件:線性表L已存在。操作結(jié)果:返回L中數(shù)據(jù)元素個(gè)數(shù)。GetElem(L,i,&e)初始條件:線性表L已存在,1≤i≤ListLength(L)。操作結(jié)果:用e返回L中第i數(shù)據(jù)個(gè)元素的值。LocateElem(L,e,compare())初始條件:線性表L已存在,compare()是數(shù)據(jù)元素判定函數(shù)。操作結(jié)果:返回L中第1個(gè)與e滿足關(guān)系compare()的數(shù)據(jù)元素的位序。若這樣的數(shù)據(jù)元素不存在,則返回值為0。PriorElem(L,cur_e,&pre_e)初始條件:線性表
5、L已存在。操作結(jié)果:若cur_e是L的數(shù)據(jù)元素,且不是第一個(gè),則用pre_e返回它的前驅(qū),否則操作失敗,pre_e無(wú)定義NextElem(L,cur_e,&next_e)初始條件:線性表L已存在。操作結(jié)果:若cur_e是L的數(shù)據(jù)元素,且不是最后一個(gè),則用next_e返回它的后繼,否則操作失敗,next_e無(wú)定義。ListInsert(&L,i,e)初始條件:線性表L已存在,1≤i≤ListLength(L)+1。操作結(jié)果:在L中第i個(gè)位置之前插入新的數(shù)據(jù)元素e,L的長(zhǎng)度加1。ListDelete(&L,i,&e)初始條件:線性表L已存在且非空,1≤i≤ListLength(L)。操作結(jié)果:刪除
6、L的第i個(gè)數(shù)據(jù)元素,并用e返回其值,L的長(zhǎng)度減1。ListTraverse(L,visit())初始條件:線性表L已存在。操作結(jié)果:依次對(duì)L的每個(gè)數(shù)據(jù)元素調(diào)用函數(shù)visit()。一旦visit()失敗,則操作失敗。}ADTList;步驟2:用C語(yǔ)言給出線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)及相關(guān)操作的聲明。//單鏈表的存儲(chǔ)結(jié)構(gòu)typedefstructLNode{ElemTypedata;//結(jié)點(diǎn)數(shù)據(jù)域structLNode*next;}LNode,*LinkList;基本操作的聲明:StatusInitList_L(LinkList&L);StatusDestroyList_L(LinkList&L);S
7、tatusClearList_L(LinkList&L);intListEmpty_L(LinkListL);intListLength_L(LinkListL);StatusGetElem_L(LinkListL,inti,ElemType&e);intLocateElem_L(LinkListL,ElemTypee,Status(*compare)(ElemType,ElemType)