線性表鏈?zhǔn)酱鎯\算的算法完成_第1頁
線性表鏈?zhǔn)酱鎯\算的算法完成_第2頁
線性表鏈?zhǔn)酱鎯\算的算法完成_第3頁
線性表鏈?zhǔn)酱鎯\算的算法完成_第4頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、昆明理工大學(xué)信息工程與自動化學(xué)院學(xué)生實驗報告( 20112012 學(xué)年 第 1 學(xué)期)課程名稱:數(shù)據(jù)結(jié)構(gòu)開課實驗室:信自樓 4422011 年 11月08日年級、專業(yè)、班學(xué)號姓名成績實驗項目名稱線性表鏈?zhǔn)酱鎯\算的算法實現(xiàn)指導(dǎo)教師教師評語教師簽名:年月日1、程序功能:(1) . 線性表鏈?zhǔn)酱鎯\算的的主要函數(shù)設(shè)置如下:1.主程序:void main()linkList *head=NULL;char ch;int i,key;doch=caiDan();printf("%c",ch);getch();printf("n");switch(ch)case

2、'1': head=createList();printf("n鏈表被成功的創(chuàng)建");getch();break;case '2': display(head);if(head=NULL) getch(); break; else printf("n請輸入你想插入的元素:");scanf("%d",&key);printf(" 請輸入你想插入的位置:");scanf("%d",&i);insert(head,key,i);break; case &

3、#39;3': display(head);if(head=NULL) getch(); break; else printf("n請輸入你想刪除元素的位置:");scanf("%d",&i);Delete(head,i-1);break; case '4': display(head);getch();break;case '5': exit(0);while(ch!='5');2.鏈表的建立linkList *createList()int num;linkList *head,*s,*

4、r;head=NULL;r=NULL;printf(" 請輸入元素 (輸入 0 時停止 ):");scanf("%d",&num);while(num!=00)s=(linkList*)malloc(sizeof(linkList);s->data=num;if(head=NULL) head=s;else r->next=s;r=s;printf(" 請輸入元素 (輸入 0 時停止 ):");scanf("%d",&num);3.鏈表的數(shù)據(jù)插入void insert(linkList

5、*L,dataType x,int i)linkList *p;int j;j=i-1;p=get(L,j);if(p=NULL)printf(" 插入失?。?n");getch();else insertAfter(p,x);printf("n插入成功! ");getch();4.鏈表的數(shù)據(jù)刪除void Delete(linkList *L,int i)int j;linkList *p;j=i-1;p=get(L,j);if(p!=NULL&&p->next!=NULL)deleteAfter(p);printf("n

6、刪除成功 ");getch();elseprintf(" 刪除失敗 n");getch();5.鏈表的輸出void display(linkList *head)int i=1;if(head=NULL)printf("Empty Listn");while(head!=NULL)printf("Index%d:%dn",i,head->data);head=head->next;i+;char caiDan()char ch;doprintf("1: 創(chuàng)建一個鏈表n");printf(&qu

7、ot;2: 插入 n");printf("3: 刪除 n");printf("4: 顯示 n");printf("5: 退出 n");printf(" 請選擇 :");while(ch=getch(),ch!='1'&&ch!='2'&&ch!='3'&&ch!='4'&&ch!='5');return ch;(2) .程序代碼如下:#include<std

8、io.h>#include<conio.h>#include<malloc.h>#include<stdlib.h>typedef int dataType;typedef struct nodedataType data;struct node *next;linkList;linkList *createList()int num;linkList *head,*s,*r;head=NULL;r=NULL;printf(" 請輸入元素 (輸入 0 時停止 ):");scanf("%d",&num);w

9、hile(num!=00)s=(linkList*)malloc(sizeof(linkList);s->data=num;if(head=NULL) head=s;else r->next=s;r=s;printf(" 請輸入元素 (輸入 0 時停止 ):");scanf("%d",&num);if(r!=NULL) r->next=NULL;return head;linkList *get(linkList *head,int i)int j;linkList *p;p=head;j=0;while(p->next!

10、=NULL)&&(j<i)p=p->next;j+;if(i=j) return p;else return NULL;linkList *locate(linkList *head,dataType key)linkList *p;p=head->next;while(p!=NULL)if(p->data!=key)p=p->next;else break;return p;void insertAfter(linkList *p,dataType x)linkList *s;s=(linkList*)malloc(sizeof(linkList

11、);s->data=x;s->next=p->next;p->next=s;void insertBefore(linkList *p,dataType x)linkList *s;s=(linkList*)malloc(sizeof(linkList);s->data=p->data;s->next=p->next;p->next=s;p->data=x;void insert(linkList *L,dataType x,int i)linkList *p;int j;j=i-1;p=get(L,j);if(p=NULL)prin

12、tf(" 插入失敗! n");getch();else insertAfter(p,x);printf("n插入成功! ");getch();void deleteAfter(linkList *p)linkList *r;r=p->next;p->next=r->next;free(r);void Delete(linkList *L,int i)int j;linkList *p;j=i-1;p=get(L,j);if(p!=NULL&&p->next!=NULL)deleteAfter(p);printf(&

13、quot;n刪除成功 ");getch();elseprintf(" 刪除失敗 n");getch();void display(linkList *head)int i=1;if(head=NULL)printf("Empty Listn");while(head!=NULL)printf("Index%d:%dn",i,head->data);head=head->next;i+;char caiDan()char ch;doprintf("1: 創(chuàng)建一個鏈表n");printf(&quo

14、t;2: 插入 n");printf("3: 刪除 n");printf("4: 顯示 n");printf("5: 退出 n");printf(" 請選擇 :");while(ch=getch(),ch!='1'&&ch!='2'&&ch!='3'&&ch!='4'&&ch!='5');return ch;void main()linkList *head=NU

15、LL;char ch;int i,key;doch=caiDan();printf("%c",ch);getch();printf("n");switch(ch)case '1': head=createList();printf("n鏈表被成功的創(chuàng)建");getch();break;case '2': display(head);if(head=NULL) getch(); break; else printf("n請輸入你想插入的元素:");scanf("%d"

16、;,&key);printf(" 請輸入你想插入的位置:");scanf("%d",&i);insert(head,key,i);break; case '3': display(head);if(head=NULL) getch(); break; else printf("n請輸入你想刪除元素的位置:");scanf("%d",&i);Delete(head,i-1);break; case '4': display(head);getch();break;case '5': exit(0);while(ch!='5');二、實驗報告:(1).運行截圖如下:1)創(chuàng)建一個鏈表:2)插入元素:3)刪除元素:4)顯示插入和刪除操作后的鏈表:5)退出(2). 總結(jié)比較線性表順序存儲與鏈?zhǔn)酱鎯Φ母髯蕴攸c。1.線性表的順序存儲順序存儲結(jié)構(gòu)就是用一組地址連續(xù)

溫馨提示

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

評論

0/150

提交評論