来帮小弟我看看二叉链表的有关问题~
高手进来帮我看看二叉链表的问题~~~~
/*======================================================*/
/*程序名称: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)的最后增加一个花括号 }
------解决方案--------------------
/*======================================================*/
/*程序名称: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)的最后增加一个花括号 }
------解决方案--------------------