首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

来帮小弟我看看二叉链表的有关问题~

2012-03-18 
高手进来帮我看看二叉链表的问题~~~~/**//*程序

高手进来帮我看看二叉链表的问题~~~~
/*======================================================*/
/*程序名称:2.c*/
/*程序目的:二叉树的二叉链表存储结构*/
/*Written   By   N3060120506*/
/*======================================================*/
#include   <stdlib.h>

struct   tree
{struct   tree   *left;
char   data;
struct   tree   *right;
};
typedef   struct   tree   treenode;
typedef   treenode   *b_tree;

/*------------------------------------------------------*/
/*插入二叉树的节点*/
/*------------------------------------------------------*/
b_tree   insert_node(b_tree   root,   char   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;
}
}


/*------------------------------------------------------*/
/*建立二叉树*/
/*------------------------------------------------------*/
b_tree   create_linklist(char   *data,   int   len)
{
b_tree   root   =   NULL;
int   i;

for(i=0,   i <len,   i++)
root=insert_node(root,   data[1]);
return   root;
}


/*------------------------------------------------------*/
/*输出链表数据*/
/*------------------------------------------------------*/
void   Print_List(b_tree   Head)
{
int   i;
b_tree   Pointer;
Pointer   =   Head;
while   (   Pointer   !=   NULL   )
{
for(i=1;i <16;i++)
printf( "%2d:[%c]   \n ",i,Pointer-> data);
Pointer   =   Pointer-> left;
}


/*------------------------------------------------------*/
/*主程序*/
/*------------------------------------------------------*/
void   main()
{
b_tree   root   =   NULL;
/*--------------声明二叉树数组节点数据------------------*/
char   array_tree[16]={0, '- ', '+ ', '4 ', '1 ', '* ',0,0,0,0,2, '3 ',0,0,0,0};

/*------------建立二叉链表----------------*/
root   =   create_linklist(array_tree,   15);

/*---------------输出二叉链表的内容------------------*/
printf( "\nThe   linklist   tree:\n ");
Print_List(root);

}


我编译不成功~~~555555555~~~~高手帮我改一下~~看看哪里错了~~顺便给我解释一下~~谢谢啦!!!

[解决办法]
开头增加#include <stdio.h>
在函数b_tree create_linklist(char *data, int len)中的for(i=0, i <len, i++)逗号改分号
在函数void Print_List(b_tree Head)的最后增加一个花括号 }

------解决方案--------------------


(1)for(i=0, i <len, i++)逗号改分号;
(2)在函数void Print_List(b_tree Head)的最后增加一个花括号 };
(3)root = create_linklist(array_tree, 15);中15改为16;
(4)root=insert_node(root, data[1]);中数组下标不应是1,应是i;
(5)输出函数比较乱,不知要怎么输出下面给出一个先序遍历,供参考:
void pre_travel(node *root)
{
if(root!=NULL)
{
printf( "%c ",root-> data);
pre_travel(root-> left);
pre_travel(root-> right);
}
else
return;
}
暂时就发现这些。

热点排行