単一リンクリストを使用して C でスタックを実装しようとしていますが、スタックが空でない限り、すべて正常に動作します。空になると、ポップメソッドは空であることを検出しませんが、ランダムな値を与えます。スタックが空であることを知る方法はありますか? これは、サンプルのメインプログラム出力とともに使用している pop メソッドです。
int main(int argc, char const *argv[])
{
Node* top;
push(&top,5);
printf("Popped Element: %d\n",pop(&top));
printf("Popped Element: %d\n",pop(&top));
return 0;
}
int pop(Node** top)
{
if(*top == NULL)
{
printf("Error: Stack is empty!\n");
return;
}
int temp = (*top)->iData;
*top = (*top)->next;
return temp;
}
出力:
Popped Element: 5
Popped Element: 1707388
編集:プッシュのコードは次のとおりです
void push(Node** top ,int num)
{
Node* temp = (Node* )malloc(sizeof(Node));
temp->iData = num;
temp->next = *top;
*top = temp;
}