姓名:黎懷? ? ? ?學(xué)號:2103101009? ? ? ?班級:計科211
10年積累的成都網(wǎng)站設(shè)計、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有大峪免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。實驗一 棧的基本操作
一、【實驗?zāi)康暮鸵蟆?p>(1)正確理解棧的先進后出的操作特點,建立初始棧,通過相關(guān)操作顯示棧底元素(2)棧的順序表示和實現(xiàn)
編寫一個程序?qū)崿F(xiàn)順序棧的各種基本運算,并在此基礎(chǔ)上設(shè)計一個主程序,完成如下功能:
初始化順序棧;入棧;出棧;取棧項元素;判斷棧是否為空。
(2)棧的鏈式表示和實現(xiàn)
編寫一個程序?qū)崿F(xiàn)鏈棧的各種基本運算,并在此基礎(chǔ)上設(shè)計一個主程序,完成初始化鏈棧;入棧;出棧;取棧頂元素;判斷棧是否為空。
二、【實驗內(nèi)容】
棧的順序表示和實現(xiàn)
順序棧利用一組地址連續(xù)的存儲單元依次存放自棧底到棧頂?shù)臄?shù)元素,同時附設(shè)指針top指示棧頂元素在順序棧中的位置,利用一位數(shù)組實現(xiàn)棧的順序存放。初始化順序棧,
三、【程序代碼】
#include?#include?#define?MaxSize?100
typedef?char?ElemType;
typedef?struct
{
ElemType?data[MaxSize];
int?top; //棧?頂指針
}?SeqStack; //定義棧
typedef?struct
{ElemType?elem[MaxSize];
int?front,rear;? //隊首和隊尾指針
}?SqQueue: //定義隊列
//--初始棧函數(shù)
void?InitStack(SeqStack?*&s)
{
s=(SeqStack?*)malloc(sizeof(SeqStack));
s->top=-1;
}
//---進棧函數(shù)
int?Push(SeqStack?*&s,ElemType?e)
{
if?(s->top==MaxSize-?1)
return?0;
s->top++;
s->data[s->top]=e;
return?1;
}
//--顯示棧函數(shù)
void?DispStack(SeqStack?*s)
{
int?i;?.
for?(i=s->top;i>=0;--)
printf("%c?",s->data[i]);
printf("\n");?
}
//--顯示棧底元素
void?DispBottomStack(SeqStack?*s)
printf("%c?",s->data[)];//先進后出,棧底元素為第一個?元素,即data[0]?
printf("\n");?.
/--判空棧函數(shù)
int?StackEmpty(SeqStack?*s)
{
return(s->top==-1);
}
//--出棧函數(shù)
int?Pop(SeqStack?*&s,ElemType?&e)
{
if(s->top==-l)
return?0;
e=s->data[s->top];
s->top--;
return?1;
}
//--初始隊列函數(shù)
void?InitQueue(SqQueue?*&q)
{
q=(SqQueue?*)malloc?(sizeof(SqQueue));
q->front=q->rear=0;
}
//-入隊列函數(shù)
int?InQueue(SqQueue?*&q,ElemType?e)
{
if?((q->rear+?1)%MaxSize==q->front)//隊滿
return?0;
q->rear=(q->rear+?1)%MaxSize;?
q->elem[q->rear]=e;
return?1;
//--出隊列函數(shù)
int?OutQueue(SqQueue?*&q.ElemType?&e)
{
if(q->front==?=q->rear)?//隊空
return?0;
q->front=(q->front+?1)%MaxSize;?.
e=q->elem[q->front];?
return?1;
}
//--判空隊列函數(shù)
int?QueueEmpty(SqQueue?*q)
{
return(q->front=?=?=q->rear);
}
//--主程序.
void?main()
{
ElemType?e;?
SeqStack?*s;
printf("(1)初始化棧s\n");
InitStack(s);
printf("(2)棧為%s\n",(StackEmpty(s)?"空":"非空"));
printf("(3)依次進棧元素a,b,c,d,e\n");?
Push(s,’a’);//入棧元素1
Push(s,’b’);//入棧元素2
Push(s,’c’);//入棧元素3
Push(s,’d’);//入棧元素4
Push(s,’e’);//入棧元素5
printf("(4)棧為%s\n'?,(StackEmpty(s)?"空":"非空));
printf("(5)從棧頂?shù)綏5自?");DispStack(s);
printf("(6)棧底元素為:");DispBottomStack(s);?
printf("(7)出棧/入隊列序列:");
SqQueue?*q;
InitQueue(q);
while?(!StackEmpty(s))
{
Pop(s,e);//出棧
printf("%c?",e);
InQueue(q.e);//入隊
}
printf("\n");?.
printf("(8)棧為%s,"?,(StackEmpty(s)?"空":"非空));?.
printf("隊列為%s\I",(QueueEmpty(q)?"空""非空");
printf("(9)出隊列/入棧序列:");
while?(!QueueEmpty(q))
{?
OutQueue(q,e);//出?隊
Push(s,);//入棧
printf("%c?",e);
}
printf("\n");
printf("(10)棧為%s,",(StackEmpty(s)?"空":"非空));
print("隊列為%s\n",(QueueEmpty(q)?"空":"非空));
free(q);//釋放隊列
printf("(11)從棧頂?shù)綏5自?"):DispStack(s);
free();//釋放棧
}
四、【輸出結(jié)果】
五、【實驗總結(jié)】
本次實驗中學(xué)會了順序棧和鏈棧的各個功能和操作,通過實驗棧得到了更加深刻的認識和更完善的運用。
實驗二 二叉排序樹的建立
一、【實驗?zāi)康暮鸵蟆?p>1、鞏固和加深對數(shù)據(jù)結(jié)構(gòu)課程基本知識的理解,綜合數(shù)據(jù)結(jié)構(gòu)課程里學(xué)的理論知識,完成對排序二叉樹程序的設(shè)計。二、【實驗內(nèi)容】
編寫能夠通過鍵盤輸入建立二叉排序樹,并在建立完立即在屏幕顯示中序遍歷結(jié)果的程序
三、【程序代碼】
#include#include#define?MAX?5
typedef?struct?Bnode
{
int?key;
struct?Bnode?*left;
struct?Bnode?*right;
}Bnode;
Bnode?*?btInsert(int?x,Bnode?*root);
void?Inorder(Bnode?*root);
void?main()
{
int?i;
int?a[MAX]={60,40,70,20,80};
Bnode?*?root=NULL;
printf("按關(guān)鍵字序列建立二叉排序樹\n");?.
for(i=0;key=x;
p->right=p->left=NULL;
if(root==NULL)
{?root=p;?return?p;?}
q=root;
while(flag==0)
{
if(q->key>x)
{
if(q->left!=NULL)
q=q->left;
else
{
q->left=p;
flag=1;
}
}
else
{
if(q->right!=NULL)
q=q->right;
else
{
q->right=p;
flag=1;
}
}
}
return?root;
}
void?Inorder(Bnode?*root)
if(root!=NULL)
{
Inorder(root->left);
printf("%d?",root->key);
Inorder(root->right);
}
}
四、【輸出結(jié)果】
五、【實驗總結(jié)】
通過本次試驗,對樹的知識還是有了更深層次的了解,比如如何去構(gòu)建一棵二叉排序樹,平時簡建樹的算法才用遞歸的算法,但是二叉排序樹是有規(guī)律的樹,對加深了遞歸算法了解
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧