我正在使用链接列表创建一个新堆栈。我不知道为什么TOP指针总是指向NULL。我认为我没有正确设置顶部指针,或者它在函数外部不可见。堆栈TOP指针始终为空
#include "stdio.h"
#include "stdlib.h"
typedef struct StackItem
{
int itemValue;
struct StackItem* NextItemPtr;
}StackItem;
typedef struct Stack
{
struct StackItem *TOP;
}Stack;
int IsStackEmpty(StackItem *TOP)
{
if(TOP==NULL)
return 1;
}
void pushItem(StackItem *headPtr,int n)
{
StackItem* Newnode;
Newnode=(StackItem*)malloc(sizeof(StackItem));
Newnode->itemValue=n;
printf("Checking Head TOP %d\n\n",IsStackEmpty(headPtr)); //Everytime it is giving 1
Newnode->NextItemPtr=IsStackEmpty(headPtr)?NULL:headPtr;
headPtr=Newnode;
}
int main()
{
Stack* stackptr;
stackptr=(Stack*)malloc(sizeof(Stack));
stackptr->TOP=NULL;
pushItem(stackptr->TOP,3);
pushItem(stackptr->TOP,6);
return 0;
}
您正在传递您的TOP指针。你应该通过地址传递它。 – WhozCraig 2013-02-21 17:15:14
为什么人们在尝试编写操作系统之前没有学习C ... – 2013-02-21 17:17:36
我不敢相信这已经持续了10分钟,没有人评论malloc-cast。 Durp ... nm。或者系统包含开引号('#include“stdio.h”')而不是尖括号('#include')。 –
WhozCraig
2013-02-21 17:25:59