内容发布更新时间 : 2024/12/25 0:44:15星期一 下面是文章的全部内容请认真阅读。
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 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) 专业知识分享