資源描述:
《單鏈表的定義及基本操作.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、.單鏈表的定義及基本操作一、實驗?zāi)康?、意義(1)理解線性表中帶頭結(jié)點單鏈表的定義和邏輯圖表示方法。(2)熟練掌握單鏈表的插入,刪除和查詢算法的設(shè)計與實現(xiàn)。(3)根據(jù)具體問題的需要,設(shè)計出合理的表示數(shù)據(jù)的鏈表結(jié)構(gòu),并設(shè)計相關(guān)算法。二、實驗內(nèi)容及要求說明1:本次實驗中的鏈表結(jié)構(gòu)均為帶頭結(jié)點的單鏈表。說明2:學生在上機實驗時,需要自己設(shè)計出所涉及到的函數(shù),同時設(shè)計多組輸入數(shù)據(jù)并編寫主程序分別調(diào)用這些函數(shù),調(diào)試程序并對相應(yīng)的輸出作出分析;修改輸入數(shù)據(jù),預(yù)期輸出并驗證輸出的結(jié)果,加深對有關(guān)算法的理解。具體要求
2、:建立單鏈表,完成鏈表(帶表頭結(jié)點)的基本操作:建立鏈表、插入、刪除、查找、輸出;其它基本操作還有銷毀鏈表、將鏈表置為空表、求鏈表的長度、獲取某位置結(jié)點的內(nèi)容、搜索結(jié)點。三、實驗所涉及的知識點數(shù)據(jù)結(jié)構(gòu)、C語言語法函數(shù)、結(jié)構(gòu)體類型指針、單鏈表(建表、初始化鏈表、求表長、插入、刪除、查詢算法)等。四、實驗結(jié)果及分析(所輸入的數(shù)據(jù)及相應(yīng)的運行結(jié)果,運行結(jié)果要有提示信息,運行結(jié)果采用截圖方式給出。)..五、總結(jié)與體會(調(diào)試程序的心得與體會,若實驗課上未完成調(diào)試,要認真找出錯誤并分析原因等。)調(diào)試程序時,出現(xiàn)
3、了許多錯誤。如:結(jié)構(gòu)體類型指針出錯,忽略了釋放存儲空間,對頭插法建表、尾插法建表不熟悉等。另外還有一些語法上的錯誤。由于對所學知識點概念模糊,試驗課上未能完成此次上機作業(yè)。后來經(jīng)過查閱教材,瀏覽網(wǎng)頁等方式,才完成試驗。這次試驗出現(xiàn)錯誤最重要的原因就是對課本知識點理解不深刻以及編寫代碼時的粗心。以后要都去練習、實踐,以完善自己的不足。六、程序清單(包含注釋)//單鏈表..#include#include#defineOK1#defineERROR0typedefc
4、harElemType;typedefintStatus;//線性表的單鏈表的存儲結(jié)構(gòu)typedefstructLNode{ElemTypedata;structLNode*next;}LNode,*LinkList;//LinkList為結(jié)構(gòu)體類型的指針,可以直接定義變量,比如LinkListp;//建表(頭插法)voidCreatListF(LinkList&L,ElemTypea[],intn){//初始化線性表L=(LinkList)malloc(sizeof(LNode));//分配內(nèi)存空
5、間L->next=NULL;//在表中插入元素LinkListS;inti;//頭插法for(i=0;idata=a[i];//數(shù)據(jù)域S->next=L->next;L->next=S;}}..//建表(尾插法)voidCreatListR(LinkList&L,ElemTypea[],intn){L=(LinkList)malloc(sizeof(LNode));L->next=NULL;Lin
6、kListp;p=L;LinkListS;inti;//尾插法for(i=0;idata=a[i];p->next=S;p=S;}p->next=NULL;}//初始化線性表voidInitList(LinkList&L){L=(LinkList)malloc(sizeof(LNode));L->next=NULL;}//獲得鏈表元素StatusGetElem(LinkListL,inti,ElemType&e
7、){//L為帶頭結(jié)點的單鏈表的頭指針LinkListp;intj;..//初始化,p指向第一個結(jié)點p=L->next;//j為計數(shù)器j=1;//順指針往后查找,直到p指向第i個元素或p為空while(p&&jnext;j++;}//第i個元素不存在if(!p
8、
9、j>i)returnERROR;//取第i個元素e=p->data;returnOK;}//插入StatusListInsert(LinkList&L,inti,ElemTypee){intj=0;LinkListp;p=L
10、;while(p!=NULL&&jnext;j++;}if(!p
11、
12、j>i-1)returnERROR;LinkListS;..S=(LinkList)malloc(sizeof(LNode));//生成新結(jié)點S->data=e;S->next=p->next;p->next=S;returnOK;}//刪除StatusListDelete(LinkList&L,inti,ElemType&e){LinkListp;LinkL