遍历-前辈,请教了。问题出在哪了?问题位置已标出

问题描述

前辈,请教了。问题出在哪了?问题位置已标出

#include
#include
#define Status int
#define TElemType char

#define OVERFLOW -2
#define OK 1
#define ERROR -1
#define MAXSIZE 100
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10

typedef struct BiTNode {
TElemType data;
struct BiTNode *lchild ,*rchild;
}BiTNode,*BiTree;

typedef struct {
BiTNode *base;
BiTNode *top;
int stacksize;
}Stack;

Status FInOrderTraverse(BiTree T,Status(*Visit)(TElemType e));
Status print(TElemType e);
Status InitStack(Stack & S);
Status Push(Stack &S,BiTree e);
Status StackEmpty(Stack &S);
Status GetTop(Stack &S, BiTree &e);
Status Pop(Stack &S,BiTree &e);

int main(){
BiTree T;
printf("%d
",CreateBiTree(T));

printf("中序非递归遍历:
");
printf("
%d
",FInOrderTraverse(T,print));
getchar();
getchar();
return 0;

}

Status CreateBiTree(BiTree &T){
char ch;
scanf("%c",&ch);
if (ch=='#') T=NULL;
else{
if(!(T=(BiTree)malloc(sizeof(BiTNode))))
exit(OVERFLOW);
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return OK;
}

Status FInOrderTraverse(BiTree T,Status(*Visit)(TElemType e)){
Stack S;
InitStack(S);
Push(S,T);
while(!StackEmpty(S)){
BiTree p;
while(GetTop(S,p)&&p){
Push(S,p->lchild);
printf("ddddd
");
}
printf("ddddd
");

                                                    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////printf执行

                         Pop(S,p);printf("ddddd
");/////////////////////////////////////////////////////printf不执行

                         if(!StackEmpty(S)){
                                            Pop(S,p);
                                            if(!Visit(p->data))
                                            return ERROR;
                                            Push(S,p->rchild);
                                            }//if
                                            }//while
                                            return OK;
                                            }

Status InitStack(Stack &S){
S.base=(BiTree)malloc(STACK_INIT_SIZE*sizeof(BiTNode));
if(!S.base) exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}

Status Push(Stack &S,BiTree e){
if (S.top-S.base>=S.stacksize){//
S.base=(BiTNode*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(BiTNode));
if(!S.base) exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top=*e;
S.top++;
return OK;
}

Status StackEmpty(Stack &S){

   return (S.top==S.base);
   }

Status Pop(Stack &S,BiTree &e){
if(S.top==S.base) return ERROR;
e=(S.top-1);
return OK;
}

Status GetTop(Stack &S, BiTree &e){
if(S.top==S.base) return ERROR;
e=(S.top-1);
printf("ddddd
");
return OK;
}

Status print(TElemType e){
printf("%c",e);
return OK;
}

解决方案

检查下代码,是不是死循环了。

解决方案二:

java script位置问题

时间: 2024-09-16 00:15:32

遍历-前辈,请教了。问题出在哪了?问题位置已标出的相关文章

我参考一下流程-各位前辈请教指针类问题

问题描述 各位前辈请教指针类问题 各位前辈,望能为我惑: 1.怎样编程读取一个TXT文件,并使其在屏幕上打印英汉双语 2.编写程序播放音频文件avi 解决方案 百度一下,网上很多.c语言可参考:http://zhidao.baidu.com/link?url=q6GAq97MB0K13rsPnOybpiWZvlbDPSYVBONPUdBz6e7InJRAHDKkVa1IA80l8XT5iGZUBkmNEDAC9emdlw1DVa 解决方案二: 一个关于dll导出类的对象指针的delete问题

新手 菜鸟 问题-新手上路向各位前辈请教

问题描述 新手上路向各位前辈请教 晚辈中学生一名,欲学习黑客,但window 8电脑不能从百度搜索的网站上下载x-scan和 shadow security scanner(即SSS),特向各位前辈高手请教好的办法 解决方案 作为一个黑客,你要解决的第一个我问题是学习如何使用google 解决方案二: 先学会使用搜索引擎吧还是 解决方案三: 新手上路!新手上路,多多关照

List对象中存有整型数组,如何找出这些数组中对应位置上的最大值

问题描述 List对象中有几个长度相同的整型数组,如果再在List中循环找出这些数组中对应位置上的最大value,简单例子说明:假如有三个数组如下:int[]a1=newint[]{3,10,5,0};int[]a2=newint[]{1,9,7,6};int[]a3=newint[]{5,3,5,8};比较后得到新数组对象ax=newint[]{5,9,10,8};请问如何在遍历整个List情形下中实现呢?我的平台是VS2005,不能用LINQ实现.thanks 解决方案 解决方案二:你说你这

Excel2003中怎么使用Address求出指定单元格的位置

  Excel2003中怎么使用Address求出指定单元格的位置           ①我们打开Excl2003,新建一张工作表,包含地区.城市.抽奖名单等等信息.看到苏浩这名员工幸运中奖,为了让大家看的清楚,我已经在原表格中红色显示了,我们要通过函数得知其所在的单元格位置,在F2单元格输入: =ADDRESS(1+MATCH(E2,C2:C10,0),COLUMN(C1)) .     ②回车按下,得到结果是$C$8,意思是该中奖人员在C8单元格. ③修改中奖人员名字,对应的结果也发生变化,

mfc c++-新人求教,我用mfc做了一个tcp fin的端口扫描器,死后得不出结果,求大神帮忙找出问题

问题描述 新人求教,我用mfc做了一个tcp fin的端口扫描器,死后得不出结果,求大神帮忙找出问题 cpp文件 // scanDlg.cpp : implementation file// #include ""stdafx.h""#include ""scan.h""#include ""scanDlg.h""#include ""afxdialogex.h&qu

wpf 坐标+-WPF 在Canvas 或grid中以鼠标弹出一个以鼠标中心点位置的UserControl

问题描述 WPF 在Canvas 或grid中以鼠标弹出一个以鼠标中心点位置的UserControl 具体我做了一个圆形的菜单 的UserControl 在点击窗体时 在主窗体通过鼠标点击弹出 弹出的窗体以鼠标中心点为中心! 解决方案 好吧 我自己解决了 为什么 我每一次问完问题 都会自己搞定...

长按复制粘贴-Android中长按textView弹出一个复制,editText长按弹出粘贴等等

问题描述 Android中长按textView弹出一个复制,editText长按弹出粘贴等等 Android中长按textView弹出一个复制,editText长按弹出粘贴等等这个是怎样做的,求大神解答! 解决方案 android:textIsSelectable=""true""在部分手机上不管用,你试试下面这个textview.setOnLongClickListener(new View.OnLongClickListener() { @Override pu

android微信朋友圈点击评论弹出的输入框和列表位置修改

问题描述 android微信朋友圈点击评论弹出的输入框和列表位置修改 android微信朋友圈评论弹出的输入框和列表位置修改, 微信的朋友圈点击评论之后会弹出一个输入框,请问这个是怎么实现的, 还有那个列表会根据输入框来调整位置的功能是怎么实现的, 如果有具体的代码能给我,就太感谢了! 解决方案 写一个linerlayout放在最下面隐藏掉,点击出来获取linerlaout中的edittext焦点并显示出来,软件盘就会弹出来. 解决方案二: 你上下布局,当他为可见时,他自然会顶上去, 解决方案三

index-svn检出报错,别的机子可以检出项目,我的检出的时候报错?求解!

问题描述 svn检出报错,别的机子可以检出项目,我的检出的时候报错?求解! 检不出项目,各位大神帮忙看看啊checkout https:svn地址 -r HEAD --depth=infinity --forcer HEAD --depth=infinity --force SQLite errorsvn: disk I/O error executing statement 'CREATE TABLE REPOSITORY ( id INTEGER PRIMARY KEY AUTOINCREM