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