首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请高手调试程序!该怎么处理

2012-02-16 
请高手调试程序![code#includestdio.h#include stdlib.h#includestring.htypedef struct node{int

请高手调试程序!
[code=#include<stdio.h>
#include <stdlib.h>
#include<string.h>
typedef struct node
{
int d;
struct node * right,*left;

}treenode;
typedef treenode * ptree;
int index=1;

inputdata(int *a)
{
int node;
printf("please input data:");
scanf("%d",&node);
while(node!=0)
{
a[index]=node;
index++;
scanf("%d",&node);
}

}



inorder(ptree root)
{
if (root!=NULL)
{
inorder(root->left);
printf("%d ",root->d);
inorder(root->right);
}
}
 

 ptree createtree(int *list,int position)
  {
ptree newnode;
if(list[position]==0||position>index-1)
 
return NULL;
else
{
newnode=(ptree)malloc (sizeof(treenode));

newnode->d=list[position];

newnode->left=createtree(list,2*position);

newnode->right=createtree(list,2*position+1);

return newnode;
}
 
  }



 main(void)
{
int a[100];
ptree root=NULL;
inputdata(a);
  root=createtree(a,1);
  inorder(root);
}
C/C++][/code]

该程序是二叉树的递归建立,中序遍历输出,但是输出不对!望大家看看是为什么!!!

[解决办法]
我的代码

C/C++ code
#include<stdlib.h>struct tree                //声明树的结构{     struct tree *left;     int data;     struct tree *right;};typedef struct tree treenode;type treenode *b_tree;             //声明二叉树链表//插入二叉树的节点b_tree insert_node(b_tree root,int node){     b_tree newnode;     b_tree currentnode;     b_tree parentnode;          newnode=(b_tree)malloc(sizeof(treenode));     //建立新节点的内存空间     newnode->data=node;     newnode->right=NULL;     newnode->left=NULL;     if(root=NULL)          return newnode;     else     {   currentnode=root;          while(currentnode!=NULL)          {   parentnode=currentnode;               if( currentnode->data>node)                    currentnode=currentnode->left;               else   currentnode=currentnode->right;          }          if(parentnode->data>node)               parentnode->left=newnode;          else  parentnode->right=newnode;     }     return root;}// 建立二叉树b_tree create_btree(int *data,int len){     b_tree root=NULL;     int i;     for(i=0;i<len;i++)          root=insert_node(root,data[i]);     return root;}//二叉树中序遍历void inorder(b_tree point){     if(point!=NULL)     {          inorder(point->left);          printf("%d",point->data);          inorder(point->right);     }}//主程序void main( ){     b_tree root=NULL;     int i,index;     int value;     int nodelist[20];     printf("\n pleaase input the elements of binary tree(exit for 0 ):\n");     index=0;     //读取数值存到数组中     scanf("%d",&value);          while(value!=0)     {          nodelist[index]=value];          index=index+1;          scanf("%d",&value);     }     //建立二叉树     root=create_btree(nodelist,index);     //中序遍历二叉树     printf("\nThe inorder traversal result is :");     inorder(root);     printf("\n");} 

热点排行