單鏈表操作驗證實驗報告_第1頁
單鏈表操作驗證實驗報告_第2頁
單鏈表操作驗證實驗報告_第3頁
單鏈表操作驗證實驗報告_第4頁
單鏈表操作驗證實驗報告_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

實驗報告實驗名稱單鏈表操作驗證實驗一單鏈表操作驗證一.實驗目的(1)掌握線性表的鏈接存儲結構;(2)驗證單鏈表及其基本操作的實現;(3)進一步掌握數據結構及算法的程序實現的基本方法。二.實驗內容(1)用頭插法(或尾插法)建立帶頭結點的單鏈表;(2)對已建立的單鏈表實現插人、刪除、查找等基本操作。三.實驗步驟1.需求分析本演示程序用VC++編寫,完成單鏈表的生成,任意位置的插入、刪除,以及確定某一元素在單鏈表中的位置。①輸入的形式和輸入值的范圍:插入元素時需要輸入插入的位置和元素的值;刪除元素時輸入刪除元素的位置;查找操作時需要輸入元素的值。在所有輸入中,元素的值都是整數。②輸出的形式:在所有三種操作中都顯示操作是否正確以及操作后單鏈表的內容。其中刪除操作后顯示刪除的元素的值,查找操作后顯示要查找元素的位置。③程序所能達到的功能:完成單鏈表的生成(通過插入操作)、插入、刪除、查找操作。④測試數據:生成單鏈表123234345456查找1位置為23刪除數據2插入267輸出數據123267345456源程序如下:#include<stdio.h>#include<string.h>#include<malloc.h>#include<stdlib.h>#defineNULL0structdata{ intnum;intd;structdata*next;};structdata*head,*p,*tail;intlen,i;structdata*creat(){ intn;len=sizeof(structdata);printf("len=");scanf("%d",&n);printf("輸入創建單鏈表:\n");head=(structdata*)malloc(len);printf("數據位置和數據:\n");scanf("%d%d",&head->num,&head->d);tail=head;for(i=2;i<=n;i++) { p=(structdata*)malloc(len);scanf("%d%d",&p->num,&p->d);tail->next=p;tail=p; }tail->next=NULL;return(head);}voidoutput(structdata*head){ intj; structdata*p0,*p1; p=head; for(j=0;j<len;j++) {for(i=0;i<len-j;i++)p0=p->next;if(p->num>p0->num) {p1=p;p=p0;p0=p1;} }for(p=head;p!=NULL;p=p->next)printf("%d:%d\n",p->num,p->d);}structdata*ins(structdata*head){structdata*p0,*p1,*p2;structdata*ins;printf("輸入插入的位置和數據:");ins=(structdata*)malloc(len);scanf("%d%d",&ins->num,&ins->d);p1=head;p0=ins;if(head==NULL){head=p0;p0->next=NULL;}else{ while((p0->num>p1->num)&&(p1->next!=NULL)) {p2=p1;p1=p1->next; }if(p0->num<=p1->num) { if(head==p1)head=p0;elsep2->next=p0; p0->next=p1; }else{p1->next=p0;p0->next=NULL;}}for(p=head;p!=NULL;p=p->next)printf("%d:%d\n",p->num,p->d);return(head);}structdata*del(structdata*head){ structdata*p1,*p2;intnum;printf("輸入刪除位置:");scanf("%d",&num);if(head==NULL) {printf("鏈表空!\n");gotoend;}p1=head;while(p1->num!=num&&p1->next!=NULL) {p2=p1;p1=p1->next;}if(p1->num==num) { if(p1==head)head=p1->next;elsep2->next=p1->next; }elseprintf("沒有發現%d!\n",num);for(p=head;p!=NULL;p=p->next)printf("%d:%d\n",p->num,p->d);end:return(head);}voidfind(structdata*head){ structdata*p1;intnum;printf("輸入查找位置:");scanf("%d",&num);if(head==NULL) {printf("鏈表空!\n");gotoend;}p1=head;while(p1->num!=num&&p1->next!=NULL) {p1=p1->next;}if(p1->num==num){ printf("這數據信息\n");printf("%d:%d\n",p1->num,p1->d);}elseprintf("%d沒有發現!\n",num);end:;}voidmain(){ structdata*head;intselect;head=NULL;while(1) { printf("1:創建2:插入3:刪除4:查找5:輸出6:退出\n");printf("pleaseinputselect:");scanf("%d",&select);switch(select) { case1:head=創建();break;case2:head=插入(head);break;case3:head=刪除(head);break;case4:查找d(head);break;case5:輸出(head);break;case6:退出(0); } }}使用說明:===================================1:————創建2:————插入3:————刪除4:————查找5:————輸出6:————退出===================================Select:在select后輸入數字選擇執行不同的功能。要求首先輸入足夠多的插入元素,才可以進行其他的操作。每執行一次功能,就會顯示執行的結果(正確或錯誤)以及執行后單鏈表的內容。選擇1.創建一個單鏈表。選擇2.選擇插入的位置和和數據。選擇3.輸入要刪除的位置,程序將刪除該位置的數據。選擇4.輸入查找到位置,程序將顯示該位置的數據。選擇5.程序將自動輸出經過變化后的單鏈表。選擇6.退出程序。測試

溫馨提示

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

評論

0/150

提交評論