printf(\请输入要转化的进制r:\scanf(\X=int(n); Y=n-X;
printf(\转化的r进制数为:\Convert1(S,X,r); printf(\
Convert2(Q,Y,r); getchar(); }
int main() {
PLinkStack S; PLinkQueue Q; Change(S,Q); return 0; }
心得体会:通过本次实验我基本掌握了栈、队列的两类存储结构(顺序存储结构和链式存储结构)的描述方法。掌握在不同结构中实现基本操作的基本方法。掌握在两种结构中实现查找、插入、删除操作的基本方法,通过运用队列和堆栈,实现了数制转换问题,实验中主要是要注意链式和顺序的基本操作的运用,有些地方是有区别的,要注意这方面的使用。
实验三二叉树的遍历
试编写程序:
(1)建立下面这样一棵二叉树 A B C D E F G H
(2)后序遍历这棵二叉树 (3)按层次遍历
(4)求叶子数和深度。 #include \#include \
typedef char Datatype; #define MAXSIZE 100 typedef struct bnode { Datatype data; struct bnode *lchild,*rchild; }BNode,*BTree; typedef struct{ BTree data[MAXSIZE]; int front,rear;
}seqqueue,*Pseqqueue; typedef struct{ BNode *node; int flag; }Data;
typedef struct node { Data Data[MAXSIZE]; int top;
}SeqStack,*PSeqStack; PSeqStack Init(void) { PSeqStack S; S=((PSeqStack)malloc(sizeof(SeqStack))); if(S) {
S->top=-1; return S; } }
int Empty(PSeqStack S) { if(S->top==-1) return 1; else return 0; }
int Push(PSeqStack S,Data x) { if(S->top==MAXSIZE-1) return 0; else { S->top++; S->Data[S->top]=x; return 1; } }
int Pop(PSeqStack S,Data *x) { if(Empty(S)) return 0; else { *x=S->Data[S->top]; S->top--; return 1; } }
//栈的基本操作
Pseqqueue init_seqqueue(void) {
Pseqqueue Q;
Q=(Pseqqueue)malloc(sizeof(seqqueue)); if(Q) {
Q->front=0; Q->rear=0; }
return Q;
}//初始化队列
int empty_seqqueue(Pseqqueue Q) {
if(Q&&Q->rear==Q->front) return 1; else return 0;
}//判断队是否为空
int in_seqqueue(Pseqqueue Q,BTree x) {
if((Q->rear+1)%MAXSIZE==Q->front) {
printf(\队满\return -1; } else {
Q->rear=(Q->rear+1)%MAXSIZE; Q->data[Q->rear]=x; return 0; }
}//入队
int out_seqqueue(Pseqqueue Q,BTree *x) {
if(empty_seqqueue(Q)) {
printf(\队空\return 0; } else {
Q->front=(Q->front+1)%MAXSIZE; *x=Q->data[Q->front]; return 1; }
}//出队
void destory_seqqueue(Pseqqueue *Q) {
if(*Q) free(*Q); *Q=NULL; }//销毁队列
void PreOrder(BTree t)
{ if(t) { printf(\ PreOrder(t->lchild); PreOrder(t->rchild); } }
/*void PreOrder1(BTree t) { PSeqStack S; BTree p=t; S=Init(); while(p||!Empty(S)) { if(p) { printf(\ Push(S,p); p=p->lchild; } else { Pop(S,&p); p=p->rchild; } } }
void InOrder1(BTree t) { PSeqStack S; BTree p=t; S=Init(); while(p||!Empty(S)) { if(p) { Push(S,p); p=p->lchild; } else { Pop(S,&p); printf(\
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数据结构实验报告(全)安工大(5)在线全文阅读。
相关推荐: