數據結構實驗報告順序表和鏈表_第1頁
數據結構實驗報告順序表和鏈表_第2頁
數據結構實驗報告順序表和鏈表_第3頁
數據結構實驗報告順序表和鏈表_第4頁
數據結構實驗報告順序表和鏈表_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上實 驗 報 告課程名稱 數據結構 實驗項目 實驗一 線性表的生成與操作 題目一 順序表和鏈表的創(chuàng)建與基本操作系 別_ _計算機學院 _ _專 業(yè)_ _計算機大類_ _班級/學號_(1406/)_學生姓名 _(孫文學)_實驗日期 _(2015年10月19日) 成 績 _ 指導教師 黃改娟 實驗題目:實驗一 線性表的生成與操作-順序表和鏈表的創(chuàng)建與基本操作(自己所選擇實驗題目,必填)一、 實驗目的1) 掌握線性表的順序存儲和鏈式存儲結構; 2) 驗證順序表及鏈表的基本操作的實現;(驗證)3) 理解算法與程序的關系,能夠將算法轉換為對應程序;4) 體會線性表在實際應用中能夠

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

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

4、之后返回p->data3) 程序源碼(提示:列出所編寫程序的代碼。如果利用圖形界面IDE等編程,這里只要求寫出關鍵操作的程序代碼。此外,程序一定要有注釋說明)1. 順序表的基本操作(用數組實現)#include<stdlib.h>#include<stdio.h>int main()int *a;int N,i,j,e,x;printf("請輸入線性表長度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("插入請輸0,刪除請輸1,查找輸入2:");scanf("%d",&x);if(x=0)printf("請輸入插入位置i和數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("請輸入刪除位置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("請輸入查找位置i:");sc

7、anf("%d",&i);e=ai-1;printf("%dn",e);else printf("輸入錯誤!");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)/建立一個帶頭結點的單鏈表 int n; LinkList p,q; p=L; printf("請輸入n:n"); scanf("%d",&n); printf("請輸入n個數據元素: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)/計算單鏈表的長度,然后輸出單鏈表 int num=0; LinkList p; p=L->next; while(p) num+; printf("%d ",p->data); p=p->next; printf("n長度為%dn",num); void Tips() printf("按數字鍵選擇相應操作n"); printf("<1> 輸出單鏈表及其長度:n"); printf("<2> 刪除值為x的結點:n"); printf

10、("<3> 在第n個位置插入值X:n"); printf("<4> 查找值為X的位置n:n"); printf("<0> 退出:n"); void Delete(LinkList L,int x)/刪除值為x的結點 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("鏈表中沒有%dnn",x); void Insert(LinkList L,LinkList p,ElemType e)/在第n個位置插入值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("請輸入要查找的刪除X:n"); scanf("%d",&x); Delete(L,x); break; case 3: printf("請輸入要插入的元素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("請輸入要查找的元素X:n"); scanf("%d",&

溫馨提示

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

評論

0/150

提交評論