xをプログラムに挿入すると、スタックをどのように表示できますか?スタックCを表示する方法
#include <stdio.h>
#include <stdlib.h>
struct Node
{
int Data;
struct Node* next;
} * top;
void popStack()
{
struct Node *temp, *var = top;
if (var == top)
{
top = top->next;
free(var);
}
else
printf("\nStack Empty");
}
void push(int value)
{
struct Node* temp;
temp = (struct Node*)malloc(sizeof(struct Node));
temp->Data = value;
if (top == NULL)
{
top = temp;
top->next = NULL;
}
else
{
temp->next = top;
top = temp;
}
}
void display()
{
struct Node* var = top;
if (var != NULL)
{
printf("\nElements are as:\n");
while (var != NULL)
{
printf("\t%d\n", var->Data);
var = var->next;
}
printf("\n");
}
else
printf("\nStack is Empty");
}
int main(int argc, char* argv[])
{
printf(" Wellcome to Basic Stacking. \n");
top = NULL;
while (1)
{
私はこのプログラムでは、Xを挿入した後、それは無限ループになり、スタックを表示しないと終了しないでください、私はプログラムがスタックを表示して終了したいが、それは動作しません。「×」を挿入私は何をすべきか????。
char x ;
int value;
if (value != x)
{
printf("please enter Your Name:");
scanf("%d", &value);
push(value);
fflush(stdin);
display();
}
else
{
// popStack();
display();
break;
}
}
getch();
}
入力専用ストリーム( 'stdin'など)で' fflush'を呼び出すことは、C仕様で*未定義の動作*と明示的に言及されています。いくつかのライブラリはそれを拡張機能として実装していますが、実際にはこれをやめてください。 –
もっとあなたの問題に関連しているのは、初期化される前に 'value'を使うという事実かもしれないので、* indeterminate *値があります。また、[小さなプログラムをデバッグする方法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)についてもお読みください。 –