关于#dev#的问题,如何解决?(标签-ar|关键词-#include)

明明可以在dev上跑,为啥提交时过不了。显示编译错误

img

#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct Stack
{
int data1;
char data2;
struct Stack* next;
}LinkStackNode,LinkStack;
typedef struct Node
{
int data3;
struct Node
next;
}Node,LinkList;
LinkStackNode
Push(LinkStack top)
{
LinkStackNode* p;
p=(LinkStack)malloc(sizeof(LinkStackNode));
p->next=top->next;
top->next=p;
return p;
}
void Pop(LinkStack top)
{
LinkStackNode* p;
p=top->next;
if(p!=NULL)
{
top->next=top->next->next;
free(p); p=NULL;
}
}
Node* CreateNode(Node q)
{
Node
p;
p=(LinkList)malloc(sizeof(Node));
p->next=NULL;
q->next=p;
return p;
}
int main()
{
char b;
int a,c=0,d,i;
char A[100];
LinkList L;
LinkStack top;
Node *p,*q;
LinkStackNode *r,*t,*z;
L=(LinkList)malloc(sizeof(Node));
L->next=NULL;
top=(LinkStack)malloc(sizeof(LinkStackNode));
top->next=NULL;
p=L;
for(i=0;i<100;i++)
{
scanf("%c",&b);
if(b=='\n')
break;
A[i]=b;
c++;

}
for(i=0;i<c;i++)
{
    switch(A[i])
    {
    case '+':
    case'-':

        a = 1;
        break;
    case'*':
    case'/':
        a = 2;
        break;
    default:
        a = 3;
    }
 if(A[i] !='+'&&A[i]!='-'&&A[i]!='*'&&A[i]!='/'&&A[i]!='('&&A[i]!=')'&&A[i]!='%')
 {
           q=CreateNode(p);
           q->data3=A[i];
           p=q;
 }    
  if(A[i]=='(')
 {
     z=Push(top);
   z->data1=a;
   z->data2=A[i];
 }
 else if(A[i]=='+'||A[i]=='-'||A[i]=='*'||A[i]=='/'||A[i]=='%')
 {    
 while(top->next!=NULL&&top->next->data1>=a&&top->next->data2!='(' )
 {
    q=CreateNode(p);
     q->data3=top->next->data2;
     p=q;
    Pop(top);
 }
   z=Push(top);
   z->data1=a;
   z->data2=A[i];
 }
else if(A[i]==')')
{
    while(top->next->data2!='(')
    {
     q=CreateNode(p);
      q->data3=top->next->data2;
      p=q;
     Pop(top);
    }
    if(top->next->data2=='(')
    Pop(top);    
}
}
while(top->next!=NULL)
{
    q=CreateNode(p);
     q->data3=top->next->data2;
     p=q;
    Pop(top);
}
p=L->next;
while(p!=NULL)
{
    printf("%c",p->data3);
    p=p->next;
}
return 0;

}

代码丢失了很多*号,代码重新调试了一下:


#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct Stack
{
    int data1;
    char data2;
    struct Stack* next;
}LinkStackNode, *LinkStack;
typedef struct Node
{
    int data3;
    struct Node *next;
}Node, *LinkList;
LinkStackNode* Push(LinkStack top)
{
    LinkStackNode* p;
    p = (LinkStack)malloc(sizeof(LinkStackNode));
    p->next = top->next;
    top->next = p;
    return p;
}
void Pop(LinkStack top)
{
    LinkStackNode* p;
    p = top->next;
    if (p != NULL)
    {
        top->next = top->next->next;
        free(p); p = NULL;
    }
}
Node* CreateNode(Node* q)
{
    Node* p;
    p = (LinkList)malloc(sizeof(Node));
    p->next = NULL;
    q->next = p;
    return p;
}
int main()
{
    char b;
    int a, c = 0, d, i;
    char A[100];
    LinkList L;
    LinkStack top;
    Node* p, * q;
    LinkStackNode* r, * t, * z;
    L = (LinkList)malloc(sizeof(Node));
    L->next = NULL;
    top = (LinkStack)malloc(sizeof(LinkStackNode));
    top->next = NULL;
    p = L;
    for (i = 0; i < 100; i++)
    {
        scanf("%c", &b);
        if (b == '\n')
            break;
        A[i] = b;
        c++;

    }
    for (i = 0; i < c; i++)
    {
        switch (A[i])
        {
        case '+':
        case'-':

            a = 1;
            break;
        case'*':
        case'/':
            a = 2;
            break;
        default:
            a = 3;
        }
        if (A[i] != '+' && A[i] != '-' && A[i] != '*' && A[i] != '/' && A[i] != '(' && A[i] != ')' && A[i] != '%')
        {
            q = CreateNode(p);
            q->data3 = A[i];
            p = q;
        }
        if (A[i] == '(')
        {
            z = Push(top);
            z->data1 = a;
            z->data2 = A[i];
        }
        else if (A[i] == '+' || A[i] == '-' || A[i] == '*' || A[i] == '/' || A[i] == '%')
        {
            while (top->next != NULL && top->next->data1 >= a && top->next->data2 != '(')
            {
                q = CreateNode(p);
                q->data3 = top->next->data2;
                p = q;
                Pop(top);
            }
            z = Push(top);
            z->data1 = a;
            z->data2 = A[i];
        }
        else if (A[i] == ')')
        {
            while (top->next->data2 != '(')
            {
                q = CreateNode(p);
                q->data3 = top->next->data2;
                p = q;
                Pop(top);
            }
            if (top->next->data2 == '(')
                Pop(top);
        }
    }
    while (top->next != NULL)
    {
        q = CreateNode(p);
        q->data3 = top->next->data2;
        p = q;
        Pop(top);
    }
    p = L->next;
    while (p != NULL)
    {
        printf("%c", p->data3);
        p = p->next;
    }
    return 0;
}