gpt4 book ai didi

c - 为什么会出现错误 "request for data element in something not a structure"?

转载 作者:行者123 更新时间:2023-11-30 18:07:05 26 4
gpt4 key购买 nike

注释行有什么问题?

#include<stdio.h>


typedef struct _stack
{
char data;
struct stack* next;
}stack;

int main()
{
char *s="4$2*3-3+8/4/(1+1)";
char * prefix= (char*) malloc(strlen(s+1));
convertinfixtoprefix(s,prefix);
int len=strlen(prefix);
int i;
for(i=0;i<len/2;i++)
{
char temp;
temp=prefix[i];
prefix[i]=prefix[len-i-1];
prefix[len-i-1]=prefix[i];
}
printf("The Prefix expression is %s",prefix);
}


void convertinfixtoprefix(char* infix,char*prefix)
{
stack *s=NULL;
int pr;
char c=NULL;
char d;
int i=strlen(infix)-1;
int index=0;

while(i>=0)
{
c=infix[i];
if(c==')')
{
push(&s,c);
}
else
if(c=='(')
{
while((d=pop(&s))!=')')
{
prefix[index]=d;
index++;
}
}

if( (c!='+') && (c!='-') && (c!='*') && (c!='/') && (c!='$') )
{
prefix[index]=c;
index++;
}
else
{
pr=priority(d=pop(&s));
while(pr>priority(c))
{
prefix[index]=d;
index++;
pr=priority(d=pop(&s));
}
push(&s,c);
}
}
}


void push(stack** s,char c)
{
if(*s==NULL)
{
*s=(stack*)malloc(sizeof(stack));
((*s)->data)=c;// HERE ITS SHOWS ERROR WHY?
((*s)->next)=NULL;
}
else
{
stack* temp=(stack*)malloc(sizeof(stack));
temp->data=c;
temp->next=*s;
(*s)=temp;
}
}


char pop(stack**s)
{
if(*s==NULL)
printf("Stack khaali hai bhai\n");
else
{
char c=*s->data;
stack* temp=*s;
*s=*s->next;
free(temp);
return c;
}
return 0;
}


int priority(char c)
{
if(c=='+'||c=='-')
{ return 1;
}
else if(c=='*'||c=='/'||c=='%')
{ return 2;
}
else if(c=='$')
{
return 3;
}
}

最佳答案

您的错误不在您指出的位置。

就是这些行:

char c=*s->data;
stack* temp=*s;
*s=*s->next;

应该是:

char c=(*s)->data;
stack* temp=*s;
*s=(*s)->next;

还有一些其他不好的东西,例如您需要包含 stdlib.h 和 string.h header - 并且您的一些函数在调用它们之前需要一个原型(prototype)。在打开警告的情况下进行编译,您将看到这些错误。

关于c - 为什么会出现错误 "request for data element in something not a structure"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5008688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com