我正在使用鏈接列表創建一個新堆棧。我不知道爲什麼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