| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 641 人关注过本帖
标题:我有一程序,有十个相同的错误,看一下号吗??[原创]
只看楼主 加入收藏
xieghan
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-11-30
收藏
 问题点数:0 回复次数:1 
我有一程序,有十个相同的错误,看一下号吗??[原创]

题目:利用栈进行二叉树的非递归形式的非递归的算法?
#define null 0
#define MAXNUM 100
#define N 100
typedef struct node
{char data;
struct node * lchild,* rchild;
}JD;
typedef struct
{JD * stack[MAXNUM];
int top;
int base;
}sqstack;
void initstack(sqstack *s)
{s=(sqstack *)malloc(sizeof(sqstack));
s->top=-1;
} /*栈的初始化*/

void creatBinaryTree (JD *bt)
{char e;
bt=(JD*)malloc(sizeof(JD));
printf("please input the char e:\n");
scanf("%c",&e);
if(e!='#')
{bt->data=e;
creatBinaryTree (bt->lchild);
creatBinaryTree (bt->rchild);
}
} /*创建一个二叉树*/

void push(sqstack *s,JD *p)
{s->top++;
s->stack[s->top]=p;
}

void BinaryTree(JD *p)
{JD *e;sqstack *s;
initstack(s);
while(p!=null)
{printf("%c ",p->data);
if(p->rchild!=null)
push(s,p->rchild);
if(p->lchild!=null)
p=p->lchild;
else if(p->lchild==null) break;
}
while(s->top!=s->base)
{e=s->stack[s->top];
s->top=s->top-1;
printf("%c ",e->data);
}
}

main()
{JD *bt;
creatBinaryTree(bt);
BinaryTree(bt);
}

希望高手们能指点迷津!!

搜索更多相关主题的帖子: please 二叉树 null 
2005-12-10 23:08
sunliulin80
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-12-13
收藏
得分:0 

在创建树的时候一定要用双指针,要不根本就不能把字符装进去。还有在建空间的时候要有#include <malloc.h>头文件。正确程序为:

#define NULL 0
#define MAXNUM 100
#define N 100
#include <malloc.h>
typedef struct node
{char data;
struct node * lchild,* rchild;
}JD;
typedef struct
{JD * stack[MAXNUM];
int top;
int base;
}sqstack;
initl(JD **bt)
{(*bt)=malloc(sizeof(JD));
}
initstack(sqstack **s)
{*s=(sqstack *)malloc(sizeof(sqstack));
(*s)->top=-1;
}

JD *creatBinaryTree (JD *bt)
{char e;
printf("please input the char e:\n");
scanf("%c",&e);
if(e!='#')
{bt=(JD*)malloc(sizeof(JD));
bt->data=e;
bt->lchild=creatBinaryTree (bt->lchild);
bt->rchild=creatBinaryTree (bt->rchild);
}
return bt;
}
void push(sqstack *s,JD *p)
{s->top++;
s->stack[s->top]=p;
}

BinaryTree(JD *p)
{JD *e;sqstack *s;
initstack(&s);

while(p)
{printf("%3c ",p->data);
if(p->rchild!=NULL)
push(s,p->rchild);
if(p->lchild!=NULL)
p=p->lchild;
else if(p->lchild==NULL) { p=s->stack[s->top];
s->top--;}
}
while(s->top!=s->base)
{e=s->stack[s->top];
s->top=s->top-1;
printf("%3c ",e->data);
}
}

main()
{JD *bt;
clrscr();
initl(&bt);
bt=creatBinaryTree(bt);
BinaryTree(bt);
}

2005-12-14 11:25
快速回复:我有一程序,有十个相同的错误,看一下号吗??[原创]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022066 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved