运行C语言程序时出现“TempFile.exe已停止工作”问题是怎么回事?详细应该怎么改?

主要是二叉树先序遍历的非递归算法,不知道怎么回事,创建二叉树的方法没错,所以没贴出来。
#include<stdio.h>
#include<stdlib.h>

#define OK 1
#define true 1
#define ERROR 0
#define OVERFLOW 0
#define StackSize 50 //预分配栈空间最多为50

typedef char TElemType;
typedef int Status;

//二叉树的二叉链表存储
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BitTree;

typedef BitTree SElemType; //栈元素类型

//栈的结构
typedef struct{
SElemType data[StackSize];
int top;
}SeqStack;

//初始化栈
void InitStack(SeqStack *S)
{
S->top=-1;
}

//判断栈为空
int StackEmpty(SeqStack *S)
{
if(S->top==-1)
{
return 1;
}
else
{
return 0;
}
}

//判断栈满
int StackFull(SeqStack *S)
{
if(S->top==StackSize-1)
{
return 1;
}
else
{
return 0;
}
}

//进栈
void Push(SeqStack *S,SElemType e)
{
if(StackFull(S))
{
printf("栈已满!\n");
exit(OVERFLOW);
}
else
{
S->data[++S->top]=e; //栈顶指针先加1再进栈
}
}

//出栈
SElemType Pop(SeqStack *S)
{
if(StackEmpty(S))
{
printf("栈中已没有元素!\n");
exit(OVERFLOW);
}
else
{
return S->data[S->top--]; //先出栈再栈顶指针减1
}
}

//取栈顶元素
SElemType StackTop(SeqStack *S)
{
if(StackEmpty(S))
{
printf("栈中已空!\n");
exit(OVERFLOW);
}
else
{
return S->data[S->top];
}
}

//先序遍历二叉树的非递归算法
void PreOrder(BitTree T)
{
SeqStack *S=NULL;
BitTree p;
InitStack(S);
Push(S,T); //根指针进栈
while(!StackEmpty(S))
{
while(p=StackTop(S)) //左结点
{
printf("%c ",p->data);
Push(S,p->lchild);
}
p=Pop(S); //空指针退栈
if(!StackEmpty(S)) //右结点
{
p=Pop(S);
//printf("%c ",p->data);
Push(S,p->rchild);
}
}
}

void main()
{
BitTree T=NULL;
printf("请输入二叉树的结点:\n");
CreateBiTree(&T);
printf("非递归先序遍历二叉树:\n");
PreOrder(T);
}

//先序遍历二叉树的非递归算法
void PreOrder(BitTree T)
{
SeqStack *S=new SeqStack ; <=====修改
BitTree p;
InitStack(S);
Push(S,T); //根指针进栈
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-01
可能是溢出了,用DEBUG试试追问

不大明白怎么看,你能帮我调试一下吗?怎么改?