數據結構與算法實驗報告_第1頁
數據結構與算法實驗報告_第2頁
數據結構與算法實驗報告_第3頁
數據結構與算法實驗報告_第4頁
數據結構與算法實驗報告_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、數據結構實驗報告題目: 線性表 班級:網絡工程1401班學號: 1408020106 指導教師: 高峰 日期: 2016/7/6 實驗一:線性表一:實驗要求 掌握數據結構中線性表的基本概念。 熟練掌握線性表的基本操作:創建、插入、刪除、查找、輸出、求長度及合并并運算在順序存儲結構撒謊能夠的實驗。 熟練掌握鏈表的各種操作和應用。二實驗內容 1. 編程實現在順序存儲的有序表中插入一個元素(數據類型為整型)。 2. 編程實現把順序表中從i個元素開始的k個元素刪除(數據類型為整型)。 三:實驗過程及步驟源代碼:#include<stdio.h>#include<malloc.h>

2、;#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef structint * elem;int length;int listsize;SqList;/SqList sq;void InitList_Sq(SqList *sq) /初始化列表sq->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int);sq->length=0;sq->listsize=LIST_INIT_SIZE;printf("-申請空間成功-!n");void GetElem(SqL

3、ist *sq,int i)/獲取第i位置元素的值 int *p;p=&(sq->elemi-1);printf("%d",*p);printf("n");int ListInsert_Sq(SqList *sq,int i,int a)/在i位置之前插入aint *p,*q;if(i<=0|i>sq->length+1)printf("-位置不合法-!n");return 0;if(sq->length>=sq->listsize)int* newbase=(int *)reallo

4、c(sq->elem,(sq->listsize+LISTINCREMENT)*sizeof(int);if(!newbase)printf("申請空間溢出n");return 0;sq->elem=newbase;sq->listsize+=LISTINCREMENT;p=&(sq->elemi-1);/p指向第i位置的元素q=&(sq->elemsq->length-1);/q指向最后一個元素for(;q>=p;-q) *(q+1)=*q;*p=a;+sq->length;return 1;int L

5、istDelete_Sq(SqList *sq,int i) /刪除i位置上的值int *p,*q;if(i<1|i>sq->length) return 0;p=&(sq->elemi-1);/p指向第i位置的元素q=sq->elem+sq->length-1;/q指向最后一個元素for(+p;p<=q;+p)*(p-1)=*p;-sq->length;return 1;void visit(SqList *sq)/輸出數據int i=1;for(;i<=sq->length;i+)int *p;p=&sq->

6、elemi-1;printf("%d",*p);printf(" ");void main()int i=1,a=0,boo=1,number=0;SqList s,*sq;sq=&s;InitList_Sq(sq);printf("初始化空表n");printf("輸入數據個數:n");scanf("%d",&number);printf("輸入%d個數據:",number);printf("n");for(;i<=number;i

7、+)scanf("%d",&a);if(boo=ListInsert_Sq(sq,i,a)printf("-插入成功!-n");elseprintf("-插入不成功,重新插入-!n");i=i-1;printf("輸出所有元素n");visit(sq);printf("n");printf("輸出刪除的位置:");scanf("%d",&a);if(boo=ListDelete_Sq(sq,a)printf("-數據刪除成功!-n

8、");elseprintf("-沒有刪除成功-n");printf("輸出所有元素:n");visit(sq);printf("n");printf("輸出要顯示數據的位置:");scanf("%d",&a);printf("輸出%d位置數值n",a);if(a<0|a>sq->length)printf("-輸出位置的數據不存在-n");elseGetElem(sq,a);步驟:1.初始化空表2.順序插入數據后輸出所有

9、元素3.選擇刪除位置,刪除數據后輸出所有元素4.選擇查看的數據位置,輸出選擇查看的數據四:實驗結果及分析 分析: 本程序在實現順序存儲插入以及刪除i個元素開始的k個元素刪除(數據類型為整型)。之外在刪除、查看是實時輸出結果,并且可以查看希望顯示數據的位置。數據結構實驗報告題目: 樹 班級:網絡工程1401班學號: 1408020106 指導教師: 高峰 日期: 2016/7/6 實驗二:樹一:實驗要求 掌握二叉樹,二叉樹排序數的概念和存儲方法。 掌握二叉樹的遍歷算法。熟練掌握編寫實現樹的各種運算的算法。二實驗內容 統計一棵二叉樹中每種類型節點數(度為0/1/2的節點數)。三:實驗過程及步驟#i

10、nclude<stdio.h>#include<malloc.h>#include<stdlib.h>typedef struct BitNode int data; struct BitNode *lchild,*rchild; BitNode,*BitTree;BitTree BitTreeInit() BitTree BT; BT=(BitNode*)malloc(sizeof(BitNode); BT=NULL; return BT; BitTree BitTreeCreat(BitTree &BT) int ch; printf("

11、;請輸入節點的內容,輸入0時結束建立!n"); scanf("%d",&ch); if(ch=0) BT=NULL; else BT=(BitTree)malloc(sizeof(BitNode); BT->data=ch; BitTreeCreat(BT->lchild); BitTreeCreat(BT->rchild); return BT; void BitTreeEmpty(BitTree BT) if(BT=NULL) printf("樹為空!n"); else printf("樹非空!n&quo

12、t;); void PreOrderTraverse(BitTree BT) if(BT!=NULL) printf("樹結點的內容為:%dn",BT->data); PreOrderTraverse(BT->lchild); PreOrderTraverse(BT->rchild); void InOrderTraverse(BitTree BT) if(BT!=NULL) InOrderTraverse(BT->lchild); printf("樹結點的內容為:%dn",BT->data); InOrderTravers

13、e(BT->rchild); void PostOrderTraverse(BitTree BT) if(BT!=NULL) PostOrderTraverse(BT->lchild); PostOrderTraverse(BT->lchild); printf("樹結點的內容為:%dn",BT->data); int count(BitTree BT) if(BT=NULL) return 0; else return(count(BT->lchild)+count(BT->rchild)+1); int BinTreeDepth(Bi

14、tTree BT) int i=1,j=1; if(BT=NULL) return 0; else i=BinTreeDepth(BT->lchild); j=BinTreeDepth(BT->rchild); if(i>j) return(i+1); else return (j+1); void BinTreeClear(BitTree &BT) if(BT) if(BT->lchild) BinTreeClear(BT->lchild); if(BT->rchild) BinTreeClear(BT->rchild); free(BT);

15、 BT=NULL; main() int i=1,j,l; BitTree BT; while(i!=0) printf("-歡迎使用-n"); printf("請選擇要進行的操作n"); printf("1.初始化一棵樹 2.建立一棵樹 3.判斷樹是否為空n"); printf("4.按前序遍歷樹 5.按中序遍歷樹 6.按后序遍歷樹n"); printf("7.求樹的深度 8.求樹的結點數 9.把樹清空n"); printf("0.退出操作界面n"); printf(&qu

16、ot;-謝謝使用-n"); scanf("%d",&j); switch(j) case 1:BT=BitTreeInit();printf("樹已經初始化!n");break; case 2:BitTreeCreat(BT);break; case 3:BitTreeEmpty(BT);break; case 4:PreOrderTraverse(BT);break; case 5:InOrderTraverse(BT);break; case 6:PostOrderTraverse(BT);break; case 7:l=BinTreeDepth(BT);printf("樹的深度為:%dn",l);break; case 8:l=count(BT);printf("樹的結點數為:%dn",l);b

溫馨提示

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

評論

0/150

提交評論