| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4877 人关注过本帖
标题:大家帮忙看一下这个程序应该怎么修改 VC环境下运行的 一直有报错 麻烦大神 ...
只看楼主 加入收藏
敏儿Avril
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-3-28
收藏
 问题点数:0 回复次数:1 
大家帮忙看一下这个程序应该怎么修改 VC环境下运行的 一直有报错 麻烦大神帮忙解答!感谢
// tree.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

using namespace std;

//自引用结构
struct treeNode
{
int data; //节点值
int balance; //平衡因子
int order; //生成顺序
struct treeNode *left; //指向左子树的指针
struct treeNode *right; //指向右子树的指针
struct treeNode *father;
}; /*结构定义END */

typedef struct treeNode TreeNode;
typedef TreeNode * TreeNodePtr;

/*函数原型*/
void insertNode(TreeNodePtr &rootPtr,int value,int order); //插入节点
void inOrder(TreeNodePtr rootPtr); //中序遍历
int instructions(); //菜单
void search(TreeNodePtr &rootPtr,int value,int n); //查找

//----------------------------------------------------------------------------------
/*主函数*/
void main()
{
int item; //要操作的数据
int choices; //存储随机制的变量
int i; //循环计数器
int n; //节点个数
TreeNodePtr rootPtr=NULL; //树在开始的时候为空

while(choices=instructions())
{
switch(choices)
{
case 1:
rootPtr=NULL;
printf("输入要生成二叉树的节点数>>");
scanf("%d",&n);
if(n<=0)
{
printf("输入节点数必须大于等于1\n");
break;
}
srand(time(NULL));
for(i=1;i<=n;i++)
{
item=rand()%(10*n);
insertNode(rootPtr,item,i);
}/*END for*/
break;


case 2:
printf("中序遍历:\n");
if(rootPtr==NULL)
break;
inOrder(rootPtr);
printf("\n");
break;
case 3:
printf("输入要找的数>>");
scanf("%d",&item);
search(rootPtr,item,i);
i++;
break;

default:
printf("请输入正确的选项!\n");
}/*END switch*/
}

printf("\n");

}/*END main函数*/
//----------------------------------------------------------------------------------
int instructions()
{
int choice;
printf("\n菜单: 1.生成 2.遍历 3.查找 0.退出\n>>");
scanf("%d",&choice);
return(choice);
}/*END instructions*/
//----------------------------------------------------------------------------------
/*将节点插入到树中*/
void insertNode(TreeNodePtr &rootPtr,int value,int order)
{

//生成新节点,找到一个要连的地方
TreeNodePtr currentPtr=rootPtr;
TreeNodePtr newPtr;
TreeNodePtr prePtr=rootPtr;
if(newPtr=(TreeNodePtr)malloc(sizeof(TreeNode)))
{
newPtr->data=value;
newPtr->balance=0;
newPtr->order=order;
newPtr->left=NULL;
newPtr->right=NULL;
newPtr->father=NULL;
}/*END if*/

else
{
printf("没有分配空间成功!\n");
exit(0);
}
}
搜索更多相关主题的帖子: 平衡 father include balance 
2015-03-28 11:45
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
太考眼力了。不缩进的代码实在很难出来前后逻辑。感觉是不是循环体内没有重复输入choice的值,循环条件没有发生动态变化?
2015-04-10 08:33
快速回复:大家帮忙看一下这个程序应该怎么修改 VC环境下运行的 一直有报错 麻烦 ...
数据加载中...
 
   



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

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