單鏈表的插入和刪除實驗報告_第1頁
單鏈表的插入和刪除實驗報告_第2頁
單鏈表的插入和刪除實驗報告_第3頁
單鏈表的插入和刪除實驗報告_第4頁
單鏈表的插入和刪除實驗報告_第5頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗一、單鏈表的插入和刪除 一、目的 了解和掌握線性表的邏輯結構和鏈式存儲結構,掌握單鏈表的基 本算法及相關的時間性能分析。 |,、- 二、要求: 建立一個數(shù)據(jù)域定義為字符串的單鏈表,在鏈表中不允許有重復 的字符串;根據(jù)輸入的字符串,先找到相應的結點,后刪除之。 三、程序源代碼 #in cludestdio.h #i ncludestri ng.h #i ncludestdlib.h #i ncludectype.h typedef struct node char data10; struct node *n ext; ListNode; typedef ListNode * Lin kLi

2、st; / Lin kList CreatListR1(); / / / 自定義 / 定義結點 結點的數(shù)據(jù)域為字符串 結點的指針域 Lin kList 單鏈表類型 函數(shù),用尾插入法建立 帶頭結點的單鏈表 ListNode *LocateNode();/ 函數(shù),按值查找結點 char ch10,num10; LinkList head; head=CreatListR1(); / printlist(head); / printf( Delete node (y/n):);/ DeleteAll(head); / 刪除所有結點,釋放內存 void DeleteList(); / 函數(shù),刪除指定值

3、的結點 void printlist(); / 函數(shù),打印鏈表中的所有值 void DeleteAll(); / 函數(shù),刪除所有結點, 釋放內存 /=主函數(shù) = void main() 用尾插入法建立單鏈表,返回頭指針 遍歷鏈表輸出其值 輸入“ y ”或“n”去選擇是否 刪除結點 scanf(%s,num); if(strcmp(num,y)=0 | strcmp(num,Y)=0) printf(Please input Delete_data:); scanf(%s,ch);/ 輸入要刪除的字符串 DeleteList(head,ch); printlist(head); / 用尾插入法建

4、立帶頭結點的單鏈表 LinkList CreatListR1(void) char ch10; LinkList head=(LinkList)malloc(sizeof(ListNode); / 生成頭結 點 八、 ListNode *s,*r,*pp; r=head; r-next=NULL; printf(Input # to end ); /輸入“ #”代表輸入結束 printf(Please input Node_data:); scanf(%s,ch); / 輸入各結點的字符串 while(strcmp(ch,#)!=0) pp=LocateNode(head,ch); / 按值查

5、找結點,返回結點指針 if(pp=NULL) /沒有重復的字符串,插入到鏈表中 s=(ListNode *)malloc(sizeof(ListNode); strcpy(s-data,ch); r-next=s; r=s; r-next=NULL; printf(Input # to end ); printf(Please input Node_data:); scanf(%s,ch); return head; / 返回頭指針 /=按值查找結點,找到則返回該結點的位置,否則返回 NULL= ListNode *LocateNode(LinkList head, char *key) Li

6、stNode *p=head-next; / 從開始結點比較 while(p / 掃描下一個結點 return p; /若p=NULL則查找失敗,否則 p指向找到的值 key 的結點 /=刪除帶頭結點的單鏈表中的指定結點 = void DeleteList(LinkList head,char *key) ListNode *p,*r,*q=head; p=LocateNode(head,key); / 按 key 值查找結點的 printf(position error); exit(0); while(q-next!=p) /p 為要刪除的結點, q 為 p 的前結點 q=q-next; r=q-next; q-next=r-next; free(r); /釋放結點 /= 打印鏈表 = void printlist(LinkList head) ListNode *p=head-next; / 從開始結點打印 while(p) printf(%s,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論