數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告順序表和鏈表_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告順序表和鏈表_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告順序表和鏈表_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告順序表和鏈表_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告順序表和鏈表_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上實(shí) 驗(yàn) 報(bào) 告課程名稱(chēng) 數(shù)據(jù)結(jié)構(gòu) 實(shí)驗(yàn)項(xiàng)目 實(shí)驗(yàn)一 線性表的生成與操作 題目一 順序表和鏈表的創(chuàng)建與基本操作系 別_ _計(jì)算機(jī)學(xué)院 _ _專(zhuān) 業(yè)_ _計(jì)算機(jī)大類(lèi)_ _班級(jí)/學(xué)號(hào)_(1406/)_學(xué)生姓名 _(孫文學(xué))_實(shí)驗(yàn)日期 _(2015年10月19日) 成 績(jī) _ 指導(dǎo)教師 黃改娟 實(shí)驗(yàn)題目:實(shí)驗(yàn)一 線性表的生成與操作-順序表和鏈表的創(chuàng)建與基本操作(自己所選擇實(shí)驗(yàn)題目,必填)一、 實(shí)驗(yàn)?zāi)康?) 掌握線性表的順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu); 2) 驗(yàn)證順序表及鏈表的基本操作的實(shí)現(xiàn);(驗(yàn)證)3) 理解算法與程序的關(guān)系,能夠?qū)⑺惴ㄞD(zhuǎn)換為對(duì)應(yīng)程序;4) 體會(huì)線性表在實(shí)際應(yīng)用中能夠

2、解決的問(wèn)題。(設(shè)計(jì)、綜合)二、 實(shí)驗(yàn)內(nèi)容1) 根據(jù)實(shí)驗(yàn)一題目列表,選定題目,說(shuō)明題目的主要需求;2) 結(jié)合所選定的題目,定義存儲(chǔ)結(jié)構(gòu),并完成對(duì)應(yīng)應(yīng)用的線性表創(chuàng)建、插入、刪除、查找等基本操作的算法描述;3) 程序編碼實(shí)現(xiàn),并獲得運(yùn)行結(jié)果。三、 報(bào)告內(nèi)容1) 實(shí)驗(yàn)題目及主要存儲(chǔ)結(jié)構(gòu)定義(提示:請(qǐng)根據(jù)所選定題目,描述存儲(chǔ)結(jié)構(gòu))題目:順序表和鏈表的創(chuàng)建及基本操作順序表我是采用數(shù)組存儲(chǔ)的,鏈表是采用結(jié)構(gòu)體存儲(chǔ)的2) 結(jié)合題目,說(shuō)明對(duì)相應(yīng)線性表的基本操作算法描述(提示:可用自然語(yǔ)言、流程圖、偽代碼等均可,要求對(duì)每一個(gè)操作,都給出具體的算法描述)基本操作:#順序表#(1) 插入:在線性表中的x位置插入y-將

3、x位置及之后的元素都往后挪一位,將y的值賦給ax.(2) 刪除:刪除位置為x的元素-另y=ax,然后x之后的元素都往前挪一位。(3) 查找:尋找值為y的元素-從a0開(kāi)始,若ai=y,則返回i,否則i+。#鏈表#(1) 插入:當(dāng)i小于要插入的位置x時(shí),i+,插入p->data-p->next=s->next;s->next=p;(2) 刪除:當(dāng)p->data不等于要?jiǎng)h除的值x時(shí),p=p->next;q=p->next; p->next=q->next; free(q);(3)查找:當(dāng)p->data!=x時(shí),p=p->next,找到

4、之后返回p->data3) 程序源碼(提示:列出所編寫(xiě)程序的代碼。如果利用圖形界面IDE等編程,這里只要求寫(xiě)出關(guān)鍵操作的程序代碼。此外,程序一定要有注釋說(shuō)明)1. 順序表的基本操作(用數(shù)組實(shí)現(xiàn))#include<stdlib.h>#include<stdio.h>int main()int *a;int N,i,j,e,x;printf("請(qǐng)輸入線性表長(zhǎng)度N:");scanf("%d",&N);a=(int *)malloc(N*sizeof(int);for(i=0;i<N;i+) /初始化ai=i;prin

5、tf("初始順序表為:");for(i=0;i<N;i+)printf("%d ",ai);printf("n");printf("插入請(qǐng)輸0,刪除請(qǐng)輸1,查找輸入2:");scanf("%d",&x);if(x=0)printf("請(qǐng)輸入插入位置i和數(shù)e:");/插入scanf("%d%d",&i,&e);a=(int *)realloc(a,(N+1)*sizeof(int);for(j=N-1;j>=i-1;j-)

6、aj+1=aj;ai-1=e;for(i=0;i<N+1;i+)printf("%d ",ai);printf("n");else if(x=1) /刪除printf("請(qǐng)輸入刪除位置i:");scanf("%d",&i);for(i;i<N;i+)ai-1=ai;for(i=0;i<N-1;i+)printf("%d ",ai);printf("n");else if(x=2) /查找printf("請(qǐng)輸入查找位置i:");sc

7、anf("%d",&i);e=ai-1;printf("%dn",e);else printf("輸入錯(cuò)誤!");free(a);a=NULL;return 0;2. 單鏈表的基本操作#include<stdio.h> #include<stdlib.h> #define ERROR 0 #define OK 1 typedef int status; typedef int ElemType; typedef struct Node ElemType data; struct Node *next;

8、LNode,*LinkList; void Build(LinkList L)/建立一個(gè)帶頭結(jié)點(diǎn)的單鏈表 int n; LinkList p,q; p=L; printf("請(qǐng)輸入n:n"); scanf("%d",&n); printf("請(qǐng)輸入n個(gè)數(shù)據(jù)元素:n"); while(n-) q=(LinkList)malloc(sizeof(LNode); scanf("%d",&q->data); q->next=NULL; p->next=q; p=q; void Print(

9、LinkList L)/計(jì)算單鏈表的長(zhǎng)度,然后輸出單鏈表 int num=0; LinkList p; p=L->next; while(p) num+; printf("%d ",p->data); p=p->next; printf("n長(zhǎng)度為%dn",num); void Tips() printf("按數(shù)字鍵選擇相應(yīng)操作n"); printf("<1> 輸出單鏈表及其長(zhǎng)度:n"); printf("<2> 刪除值為x的結(jié)點(diǎn):n"); printf

10、("<3> 在第n個(gè)位置插入值X:n"); printf("<4> 查找值為X的位置n:n"); printf("<0> 退出:n"); void Delete(LinkList L,int x)/刪除值為x的結(jié)點(diǎn) LinkList p,q; p=L; while( p->next &&p->next->data!=x) p=p->next; if(p->next) q=p->next; p->next=q->next; free(q)

11、; printf("刪除成功!nn"); Print(L); else printf("鏈表中沒(méi)有%dnn",x); void Insert(LinkList L,LinkList p,ElemType e)/在第n個(gè)位置插入值X LinkList s; int i=1; s=L; while(i<e) s=s->next;i+; p->next=s->next; s->next=p; Print(L); /查找值為X的位置nvoid find(LinkList L,int e)int n=1;LinkList p;p=L;

12、while(p->next&&p->next->data!=e)p=p->next; n+;if(p->next)printf("%d的位置是%dn",e,n);elseprintf("不存在%d",e); int main() int op,x,n; LinkList L,p; L=(LinkList)malloc(sizeof(LNode); L->next=NULL; L->data=-1; Build(L); Tips(); scanf("%d",&op); w

13、hile(op) switch(op) case 1: Print(L); break; case 2: printf("請(qǐng)輸入要查找的刪除X:n"); scanf("%d",&x); Delete(L,x); break; case 3: printf("請(qǐng)輸入要插入的元素X和插入的位置n:n"); scanf("%d",&x); scanf("%d",&n); p=(LinkList)malloc(sizeof(LNode); p->data=x; Insert(L,p,n); printf("插入成功!nn"); break; case 4: printf("請(qǐng)輸入要查找的元素X:n"); scanf("%d",&

溫馨提示

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

評(píng)論

0/150

提交評(píng)論