繁体   English   中英

具有结构的c遍历中的二叉树

[英]binary tree in c traversal having struct

我收到这样的错误

第13行3 [Error]预期在'。'之前为'=',',',';','asm'或' attribute '。 代币

请帮我解决这个问题

#include<stdio.h>
#include<stdlib.h>
typedef struct T
{
    int data;
    struct T *r,*l;
}t;
 struct stack
{
    t* a[100];
    int top;
}s1;
s1.top=-1;
void push(t* root)
{
    s1.a[++s1.top]=root;
}
t* pop()
{
    s1.a[s1.top--];
}

t* create(t *root,int ele)
{   
    //printf("\nits gion");
    if(root==NULL)
    {printf("\nits gion");
        root=malloc(sizeof(t));
        root->r=root->l=NULL;
        root->data=ele;
    }
    //printf("\nits gion");
        else if(ele<root->data)
    {
        root->l=create(root->l,ele);
    }
    else if(ele>root->data)
    {
        root->r=create(root->r,ele);
    }
        else
    printf("\nduplicate ");

    return root;
}
void





#include<stdio.h>
#include<stdlib.h>
typedef struct T
{
    int data;
    struct T *r,*l;
}t;
 struct stack
{
    t* a[100];
    int top;
}s1;
s1.top=-1;
void push(t* root)
{
    s1.a[++s1.top]=root;
}
t* pop()
{
    s1.a[s1.top--];
}

t* create(t *root,int ele)
{   
    //printf("\nits gion");
    if(root==NULL)
    {printf("\nits gion");
        root=malloc(sizeof(t));
        root->r=root->l=NULL;
        root->data=ele;
    }
    //printf("\nits gion");
        else if(ele<root->data)
    {
        root->l=create(root->l,ele);
    }
    else if(ele>root->data)
    {
        root->r=create(root->r,ele);
    }
        else
    printf("\nduplicate ");

    return root;
}
void mo(t * root)
{
    if(root->r==NULL)
    printf("%d",root->data);
    else
    mo(root->r);

}
void inorder(t* root)
{   while(1)
{
    while(root)
    {
        push(root);
        root=root->l;
    }
    root=pop();
    if(root==NULL) break;
    printf("%d",root->data);
    root=root->r;

}
}
void postorder(t* root)
{   if(root==NULL) return;
    else 
    {

        postorder(root->l);
        postorder(root->r);
            printf("%d",root->data);
    }
}
void preorder(t* root)
{   if(root==NULL) return;
    else 
    {
    printf("%d",root->data);
        preorder(root->l);

        preorder(root->r);

    }
}
void lo(t * root)
{
    if(root->l==NULL)
    printf("%d",root->data);
    else
    mo(root->l);

}
void search(t *root,int ele)
{    if(root==NULL)
    printf("not fnd");
    else if(ele==root->data) printf("\nele found");
    else if(ele<root->data)
    search(root->l,ele);
    else if(ele>root->data)
    search(root->r,ele);


}


void main()
{int ch,ele;
    t *root=NULL;
    do
    {
        printf("\n1.add 2.m 3.l 4.exit 5.search 6.preorder7.inorder 8.postorder");
        scanf("%d",&ch);
        if(ch==1) {scanf("%d",&ele);
        //printf("\nits gion");
        root=create(root,ele);}
        if(ch==2)
        mo(root);
        if(ch==3)lo(root);
        if(ch==5)
        {
            scanf("%d",&ele);
            search(root,ele);

        }
        if(ch==6) preorder(root);
        if(ch==7) inorder(root);
        if(ch==8) postorder(root);
    }while(ch!=4);
}

第13行的编译器错误与此代码有关:

s1.top=-1;

不在函数内部。 C仅编译和执行函数内部的代码-从调用函数开始。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM