数据结构和算法实验指导书 下载本文

内容发布更新时间 : 2024/5/18 7:49:45星期一 下面是文章的全部内容请认真阅读。

WORD格式可编辑 q->front=q->rear=0; }

int EmptyQueue(Queue *q)/*判断队列空*/ {

if(q->front==q->rear) return 1; else

return 0; }

int DeQueue(Queue *q) /*出队列*/ {

return (int)q->data1[q->front++]; }

void InQueue(Queue *q,int data) /*入队列*/ {

q->data1[q->rear++]=data; }

int IsHuiWen(stack *st,Queue *q,char * a) { {

int i,zhan,dui,k=0; //i计数,zhan代表应往栈里边传几个原素,dui代表应从第几个原素开始往队列传值,k计算数组a[]中有多少原素

while(a[k]!='\\0') k++; if(k%2==0) {

zhan=k/2; dui=k/2+1; }

if(k%2==1) {

zhan=k/2; dui=k/2+2; }

for(i=0;i

push(st,a[i]); }

for(i=zhan;i

InQueue(q,a[i]);

专业知识分享

WORD格式可编辑 }

for(i=0;i

if(pop(st)!=DeQueue(q)) return 0; }

return 1; }

int main() {

char a[10]={'a','b','c','d','b','a'}; stack st; Queue q; init(&st);

initQueue(&q);

printf(\}

四、实验报告要求 1、撰写实验报告;

2、对实验中出现的问题和结果进行总结。

专业知识分享

WORD格式可编辑

专业知识分享

WORD格式可编辑 实验五 二叉树的遍历及应用

一、实验目的

1.掌握二叉树的定义;

2.掌握二叉树的基本操作,如二叉树的建立、遍历、结点个数统计、树的深度计算等。 二、实验内容

用递归的方法实现以下算法:

1.以二叉链表表示二叉树,建立一棵二叉树; 2.输出二叉树的中序遍历结果; 3.输出二叉树的前序遍历结果; 4.输出二叉树的后序遍历结果; 5.计算二叉树的深度; 6.统计二叉树的结点个数; 7、二叉树的层序遍历结果。 三、实验提示

1、//按要求将程序补充完整 #include #include #include #define NULL 0

typedef struct BiTNode{ char data;

struct BiTNode *lchild,*rchild; }BiTNode,*BiTree;

//二叉树的建立 BiTree Create(BiTree T) { char ch; scanf(\ if(ch=='#')T=NULL;

//设置一个接收数据的变量

//设置结束符

else{

T = (BiTree)malloc(sizeof(BiTNode)); //生成心节点 T->data = ch; T->lchild = Create(T->lchild); T->rchild = Create(T->rchild); }

return T; }

//二叉树的前序递归遍历

void Preorder(BiTree T) { if(T)

//递归建立

专业知识分享

WORD格式可编辑 { printf(\ Preorder(T->lchild); Preorder(T->rchild); } }

//统计二叉树的结点个数

int Sumleaf(BiTree T) { int n; if(T==NULL) return 0; else { n=1+Sumleaf(T->lchild)+Sumleaf(T->rchild); } return n; }

//二叉树的中序递归遍历 void zhongxu(BiTree T) { if(T) { Preorder(T->lchild); printf(\ Preorder(T->rchild); } }

//二叉树的后序递归遍历 void houxu(BiTree T) { if(T) { Preorder(T->lchild); Preorder(T->rchild); printf(\ } }

//计算二叉树的深度 int Depth(BiTree T) { //谁大选谁

int n;

if(T==NULL)

专业知识分享