我收到这样的错误
第13行3 [错误]预期' =',',',&#39 ;;',' asm'或' 属性' 之前'。'令牌
请帮我解决这个问题
#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);
}
答案 0 :(得分:1)
第13行的编译器错误是针对此代码的:
s1.top=-1;
不在函数内部。 C只编译并执行函数内部的代码 - 首先调用 main 函数。