我正在使用链表创建堆栈(我只在推送部分)。我已将我的结构声明为
struct LinkedStack {
int data;
struct LinkedStack* next;
};
我有3个指向全局声明的LinkedStack的指针。
struct LinkedStack *first = NULL;
struct LinkedStack *previous = NULL;
struct LinkedStack *current = NULL;
在main()
我写了这个
int data = 0, choice = 0;
if(current == NULL) {
printf("\nNo Memory Allocated");
}
printf("\n1. Push Data");
printf("\n2. Pop Data");
printf("\n3. Display The Stack");
printf("\n4. Exit");
scanf("%d", &choice);
switch(choice) {
case 1:
printf("Enter the data:: ");
scanf("%d", &data);
push(¤t, data);
break;
}
我写的推送功能就是这个 -
void push(struct LinkedStruct **s, int usrdata) {
if(first == NULL) {
first = *s;
}
if(previous != NULL) {
previous->next = *s;
}
*s->data = usrdata;
previous = *s;
*s->next = NULL;
}
但这会导致编译失败。错误是 -
请求成员'数据'在非结构或 工会
请求成员'下一个'的东西不是结构或 联合
这些错误的行号是这些行:
*s->data = usrdata;
previous = *s;
*s->next = NULL;
你能告诉我为什么会这样吗?
答案 0 :(得分:4)
答案 1 :(得分:-1)
您应该使用s->data = usrdata
或(*s).data = usrdata
。