版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)結(jié)構(gòu)實驗報告
題目:線性表
班級:網(wǎng)絡(luò)工程1401班
學(xué)號:______
指導(dǎo)教師:高峰
日期:2023/7/6
實驗一:線性表
一:實驗規(guī)定
掌握數(shù)據(jù)結(jié)構(gòu)中線性表的基本概念。
純熟掌握線性表的基本操作:創(chuàng)建、插入、刪除、查找、輸出、求長度及
合并并運算在順序存儲結(jié)構(gòu)撒謊可以的實驗。
純熟掌握鏈表的各種操作和應(yīng)用。
二.實驗內(nèi)容
1.編程實現(xiàn)在順序存儲的有序表中插入一個元素(數(shù)據(jù)類型為整型)。
2.編程實現(xiàn)把順序表中從i個元素開始的k個元素刪除(數(shù)據(jù)類型為整型)。
三:實驗過程及環(huán)節(jié)
源代碼:
#include<stdio.h>
#include<ma1loc.h>
#defineLIST_INIT_SIZE100
#defineLISTINCREMENT10
typedefstruct{
int*elem;
int1ength;
int1istsize;
}SqList;
//SqListsq;
voidInitList_Sq(SqList*sq)//初始化列表
I
sq->e1em=(int*)ma11oc(LIST_INIT_SIZE*sizeof(int));
sq->length=O;
sq->listsize=LIST_INIT_S!ZE;
Printf(〃----申請空間成功----!\n〃);
)
voidGetE1em(SqList*sq,inti)〃獲取第i位置元素的值
{
int*p;
p=&(sq->elem[i-1]);
printf*p);
printf(〃\n〃);
)
intListlnsert_Sq(SqList*sq,inti,inta)〃在i位置之前插入a
(
int*p,*q;
if(i<=0I|i>sq—>length+1)
I
printfC—-位置不合法——!\n");
return0;
)
if(sq->1ength>=sq->1istsize)
(
int*newbase=(int*)realloc(sq—>elem,(sq—>1istsize+LISTINCRE
MENT)*sizeof(int));
if(!newbase)
(
printf(〃申請空間溢出\n〃);
return0;
)
sq->elem=newbase;
sq—>listsize+=LISTINCREMENT;
)
p=&(sq->e1em[i-1]);〃p指向第i位置的元素
q=&(sq->elem[sq->length-1]);//q指向最后一個元素
for(;q>=p;—q)*(q+1)=*q;
*p=a;
++sq—>1ength;
return1;
)
intListDelete_Sq(SqList*sq,inti)〃刪除i位置上的值
(
int*p,*q;
if(i<1||i>sq->1ength)return0;
p=fc(sq—>elem[i-l]);//p指向第i位置的元素
q=sq—>elem+sq->length—1;//q指向最后一個元素
for(++p;p〈=q;++p)
!
*(pT)=*p;
)
—sq->length;
return1;
}
voidvisit(SqList*sq)//輸出數(shù)據(jù)
inti=l;
for(;i<=sq->length;i++)
(
int*p;
p=&sq->ele;
printf(,z%dM,*p);
printf(n〃);
)
)
voidmain()
(
inti=1,a=0,boo=1,number=0;
SqLists,*sq;
sq二&s;
InitList_Sq(sq);
printf(〃初始化空表\n〃);
printf(M輸入數(shù)據(jù)個數(shù):\n");
scanf("%d〃,&number);
printf(“輸入%d個數(shù)據(jù):",number);
printf(〃\n〃);
for(;i<=number;i++)
I
scanf(繪d〃,&a);
if(boo=ListInsert_Sq(sq,i,a))
(
printf(〃----插入成功!----\n〃);
)
else
I
printfC---插入不成功,重新插入!\n〃);
i=i-l;
)
)
printf(〃輸出所有元素\n〃);
visit(sq);
printf(〃\n〃);
Printf(〃輸出刪除的位置:”);
scanf(繪d〃,&a);
if(boo=ListDe1ete_Sq(sq,a))
I
printf("—數(shù)據(jù)刪除成功!----\n〃);
}else
I
printfC—沒有刪除成功----\n〃);
)
Printf(〃輸出所有元素:\n〃);
visit(sq);
printf(〃\n〃);
printf(〃輸出要顯示數(shù)據(jù)的位置:〃);
scanf("%d,z,&a);
printf("輸出%:1位置數(shù)值\n",a);
if(a<01Isq->length)
PrintfC---輸出位置的數(shù)據(jù)不存在——\n");
)
eIse
(
GetE1em(sq,a);
)
)
環(huán)節(jié):
1.初始化空表
2.順序插入數(shù)據(jù)后輸出所有元素
3.選擇刪除位置,刪除數(shù)據(jù)后輸出所有元素
4.選擇查看的數(shù)據(jù)位置,輸出選擇查看的數(shù)據(jù)
四:實驗結(jié)果及分析
口X
WilInJ-
初安臺d七
輸入4個妾攵據(jù)二
1234
—?—
-----徜功!-----
-------!-----------------------------
-------!-----------------------------
與俞出所7fr
1234
播出RO?J徐的位置;2
——絨據(jù)朋崢成功!
與俞出月片有">i,.M:
134
忤前士菱顯缶奏攵據(jù)白勺位第L3
麗出3母互數(shù)值
住叟狗立開自車氤入二法
分析:
本程序在實現(xiàn)順序存儲插入以及刪除i個元素開始的k個元素刪除(數(shù)據(jù)類型為
整型)。之外在刪除、查看是實時輸出結(jié)果,并且可以查看希望顯示數(shù)據(jù)的位置。
數(shù)據(jù)結(jié)構(gòu)實驗報告
題目:________樹_________
班級:網(wǎng)絡(luò)工程1401班
學(xué)號:______
指導(dǎo)教師:高峰
日期:2023/7/6
實驗二:樹
一:實驗規(guī)定
掌握二叉樹,二叉樹排序數(shù)的概念和存儲方法。
掌握二叉樹的遍歷算法。
純熟掌握編寫實現(xiàn)樹的各種運算的算法。
二.實驗內(nèi)容
記錄一棵二叉樹中每種類型節(jié)點數(shù)(度為0/1/2的節(jié)點數(shù))。
三:實驗過程及環(huán)節(jié)
#inc1ude<stdio.h>
#include<mal1oc.h>
#include<stdlib.h>
typedefstructBitNode(
intdata;
structBitNode*1child,*rchild;
}BitNode,*BitTree;
BitTreeBitTreeInit(){
BitTreeBT;
BT=(BitNode*)ma1loc(sizeof(BitNode));
BT=NULL;
returnBT;
!
BitTreeBitTreeCreat(BitTree&BT){
intch;
printf(〃請輸入節(jié)點的內(nèi)容,輸入0時結(jié)束建立!\n〃);
seanf(M%dH,&ch);
if(ch=0)
BT=NULL;
else{
BT=(BitTree)maHoc(sizeof(BitNode));
BT->data二ch;
BitTreeCreat(BT->1child);
BitTreeCreat(BT->rchild);
I
returnBT;
voidBitTreeEmpty(BitTreeBT){
if(BT=NULL)
Printf(”樹為空!\n〃);
else
printf(〃樹非空!\n");
)
voidPreOrderTraverse(BitTreeBT){
if(BT!=NULL){
printf(u樹結(jié)點的內(nèi)容為:%d\n〃,BT->data);
PreOrderTraverse(BT—>1chi1d);
PreOrderTraverse(BT->rchild);
}
}
voidIn0rderTraverse(BitTreeBT){
if(BT!=NULL){
In0rderTraverse(BT->lchild);
printf(〃樹結(jié)點的內(nèi)容為:%d\n〃,BT->data);
InOrderTraverse(BT->rchild);
}
)
voidPostOrderTraverse(BitTreeBT){
if(BT!=NULL){
PostOrderTraverse(BT->lchi1d);
Post0rderTraverse(BT->lchi1d);
printf(”樹結(jié)點的內(nèi)容為:%d\n〃,BT->data);
}
)
intcount(BitTreeBT){
if(BT==NULL)
return0;
else
return(count(BT—>1child)+count(BT->rchild)+l);
}
intBinTreeDepth(BitTreeBT){
inti=l,j=1;
if(BT==NULL)
return0;
e1se
(
i=BinTreeDepth(BT->lchi1d);
j=BinTreeDepth(BT->rchi1d);
if(i>j)
return(i+l);
else
return(j+1);
)
)
voidBinTreeC1ear(BitTree&BT){
if(BT){
if(BT->lchi1d)
BinTreeClear(BT->1child);
if(BT->rchild)
BinTreeC1ear(BT->rchi1d);
free(BT);
BT=NULL;
)
}
main(){
inti=1,j,1;
BitTreeBT;
while(i!=0){
printf(〃-------------------歡迎使用--------------------------\n'*);
printf(〃請選擇要進(jìn)行的操作'n〃);
printf(,zl.初始化一棵樹2.建立一棵樹3.判斷樹是否為空\n〃);
printf(〃4.按前序遍歷樹5.按中序遍歷樹6.按后序遍歷樹\n〃);
printf(“7.求樹的深度8.求樹的結(jié)點數(shù)9.把樹清空\n〃);
Printf(〃0.退出操作界面\n〃);
printf------------------謝謝使用---------------------------\n”);
scanf(u%dz/,&j);
switch(j){
case1:BT=BitTreeInit();printf(〃樹已經(jīng)初始化!\n〃);break;
case2:BitTreeCreat(BT);break;
case3:BitTreeEmpty(BT);break;
case4:PreOrderTraverse(BT);break;
case5:InOrderTraverse(BT);break;
case6:PostOrderTraverse(BT);break;
case7:1=BinTreeDepth(BT);printf(“樹的深度為:%d\n
〃,1);break;
case8:l=count(BT);printf("樹的結(jié)點數(shù)為:%d\n〃,1);brea
k;
case9:BinTreeClear(BT);printf(〃樹已經(jīng)清空!\n〃);break;
case0:exit(0);
}
)
)
環(huán)節(jié):
1.選擇進(jìn)行的操作
2.初始化、建立、判斷樹是否空、先/中/后序遍歷、求深度/結(jié)點,清空樹
3.顯示結(jié)果
四:實驗結(jié)果及分析
B"&\Users\dell\Desktop^5§§W^\demo\Debug\s.exe
------------雙迎使用-------------------------------歡迎使用-------------------
請選擇要進(jìn)行的操作
請解要進(jìn)行的操作1.初始化一棵樹2.建立一棵樹3.判斷樹是否為空
4.按前序遍歷樹5.按中序遍歷樹6.按后序遍歷樹
1.初雌一棵樹2.建立一嬲工到輛提否為空7.求樹的深度8.求樹的結(jié)點數(shù)9.把樹清空
曲序顫樹.按巾序遍歷樹.按后序遍歷樹0.退出操作界面
56-----------------謝謝使用---------------
7.求樹的深度8.求物結(jié)毓9.把樹清空
Q,觸麻界面樹結(jié)點的內(nèi)容為:3
------------謝謝覷--------------樹結(jié)點的內(nèi)容為:4
樹結(jié)點的內(nèi)容為:2
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025湖南懷化市鶴中一體化發(fā)展事務(wù)中心選調(diào)1人備考題庫帶答案詳解
- 2026北京市電科國際校園招聘備考題庫有答案詳解
- 2026四川廣元市利州區(qū)中醫(yī)醫(yī)院考核招聘專業(yè)技術(shù)人員2人備考題庫及答案詳解一套
- 2025河南鄭州七中教育集團(tuán)津孚學(xué)校招聘10人備考題庫及完整答案詳解1套
- 2026安徽宣城市涇縣引進(jìn)事業(yè)單位急需緊缺專業(yè)人才3人備考題庫及完整答案詳解一套
- 2025江蘇南京大學(xué)新聞傳播學(xué)院課題組面向校內(nèi)外招聘研究系列1人備考題庫及完整答案詳解一套
- 2025恒豐銀行長沙分行社會招聘9人備考題庫及一套參考答案詳解
- 2026昆明高新技術(shù)產(chǎn)業(yè)開發(fā)區(qū)管理委員會公開招聘合同聘用制工作人員備考題庫(18人)含答案詳解
- 2025湖南郴州市資興市東江街道羅圍社區(qū)公共環(huán)境衛(wèi)生類公益性崗位招聘2人備考題庫及一套參考答案詳解
- 2026河南鄭州公司市場營銷中心崗位競聘的10人備考題庫及一套參考答案詳解
- 民兵集訓(xùn)通知函
- 2025年雞飼料采購合同
- 模擬電子技術(shù)基礎(chǔ) 第4版黃麗亞課后參考答案
- 電信營業(yè)廳運營方案策劃書(2篇)
- JBT 14850-2024 塔式起重機支護(hù)系統(tǒng)(正式版)
- 專精特新申報材料范本
- 牽引供電系統(tǒng)短路計算-三相對稱短路計算(高鐵牽引供電系統(tǒng))
- (完整版)第一性原理
- 安全技術(shù)勞動保護(hù)措施管理規(guī)定
- 學(xué)習(xí)主題班會課件 高三寒假攻略
- 高一年級主任工作總結(jié)(4篇)
評論
0/150
提交評論