資源描述:
《實驗報告單鏈表》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫。
1、實驗題目:單鏈表的基本操作。實驗目的:理解單鏈表的邏輯結構和存儲結構,熟練掌握單練表的相關操作。1、問題描述:用箭頭表示鏈域屮的指針于是單鏈表就可以肓觀的畫成用箭頭鏈接起來的結點序列,單鏈表屮每個結點的儲存地址存放的其肓接前號的指針域屮,因此訪問單鏈表的每一個結點必須從表頭指針開始進行。對單鏈表的操作主要有:建立單鏈表、查找、插入一個結點、刪除一個結點、求表長。2、數據結構設計:單鏈表的結點結構如卜-Typcdefstructnodo{〃單鏈表結點結構ElemTypedata;Structnode*next;}LinkList;3、功能(函數)設計:I
2、nitListl(LinkList*&head)//初始化不帶頭指針的鏈表指針1inklist*CreateList_R();//尾插法創(chuàng)建鏈表1inklist*GetElem(1inklist*h,intpos);//通過位置查找節(jié)點1inklist*LocateElem(1inklist*h,chardat,int*i);//按值查找節(jié)點intLinklist-Insertdinklist*h,intpos,chardat);//按位置插入節(jié)點intLinklist-Delete(linklist*h,intpos);//按位置刪除節(jié)點voidSh
3、owLinklist(linklist*h);//輸出顯示鏈表4、界面設計5、編碼實現6、運行測試:Il2"D:kong£t^oWDebuglinklist.exe"—□X單鏈表的相關操作練習尾插法創(chuàng)建一個鏈表,請依次輸入節(jié)點字符數據,空格隔開(‘卅表示輸入結束):22#捜狗拼音輸入法全:附件:#include#include#includetypedefstructlist{chardata;structlist*next;}linklist;linklist*CreateList^R
4、()//尾插法建立的單鏈表{linklist*1,*p,*r;intch,i,n;1=(1inklist*)malloc(sizeof(1inklist));r=l;ch=getchar();for(i=0;idata二i;r->next二p;r=p;ch=getchar();getchar();r->next=NULL;//表示當前鏈表結束return1;linklist^GetElem(1inklist*1,intpos){linklist*p;inti
5、=l;wh訂e(i〈pos&&p!二NULL){p=p->next;//p指向下一個結點i++;}if(i==pos)returnp;//i不合法i>n或i二〈0elsereturnNULL;linklist*LocateElem(1inklist*1,chardat,int*i)//再帶頭結點的單鏈表L中查找e的元素{1inklist*p;p=l->next;//初始化p指向首元結點*i=l;while(p!二NULL){if(p->data!=dat){*i=*i+l;p=p>next;elsebreak;}returnp;intlinklist_
6、Insert(linklist*1,intpos,chardat)/〃再帶頭結點的單鏈表L中再i位置插入為e的新結點{1inklist*p,*h;inti=0;P=l;whi1e(inext!=NULL)〃以j〈iT找i~l的位置{i++;p=p->next;if(i=p()sT);{h=(linklist*)malloc(sizeof(linklist));h->data=dat;〃將結點的*s的數據域置為eh->next=p->next;//將結點*s的指針域指向結點aip->next=l;//將結點*P的指針域指向結點*sg
7、etchar();return1;intLinklist_Delete(linklistintpos)linklist*p,*s;inti二0;wh訂e(inext!=NULL)//搜索指定位置前一個節(jié)點i++;p=p_>next;if(i!二pos-1
8、
9、p->next=NULL)//查找位置非法return0;s=p->next;p->next=s-〉next;free(s);return1;}//輸出顯示節(jié)點voidShowLinklist(1inklist*1){1inklist*p;p=1-〉next;wh訂e(p!=N
10、ULL){printf(/z%c“,p->data);p二p->next;)printfr