我在一個操作系統類,我必須編寫一個簡單的堆棧程序(主函數只是確定用戶要求你做什麼)。如果不需要C語言,我會在很久以前完成這個工作,但是因爲我不擅長編寫C代碼,它有一個「錯誤」......迄今爲止的錯誤是,它只是繼續「流行「相同的價值。 (它實際上並沒有彈出任何東西)。我認爲這是因爲我不明白結構和指針是如何工作的。或者這是一個不太明顯的編碼錯誤?簡單的堆棧程序C
#include <stdio.h>
struct node {
int data;
struct node *next;
struct node *prev;
} first;
void push(int);
void pop();
int main(void)
{
int command = 0;
while (command != 3)
{
printf("Enter your choice:\n1) Push integer\n2) Pop Integer\n3) Quit.\n");
scanf("%d",&command);
if (command == 1)
{
// push
int num;
scanf("%d",&num);
push(num);
}
else
{
if (command == 2)
{
pop();
}
else
{
if (command != 3)
{
printf("Command not understood.\n");
}
}
}
}
return 0;
}
void push (int x)
{
struct node newNode;
newNode.data = x;
newNode.prev = NULL;
newNode.next = &first;
first = newNode;
printf("%d was pushed onto the stack.\n", first.data);
}
void pop()
{
if (first.data == '\0')
{
printf("Error: Stack Empty.\n");
return;
}
printf("%d was popped off the stack.\n", first.data);
first = *(first.next);
first.prev = NULL;
}