int peek()
{
if(top == -1)
{
printf("\n \t STACK UNDERFLOW");
return -1;
}
else
{
if(x != -1)
printf("\n The top most element is %d",x);
return x[top];
}
}
我的 Peek 操作未列印正確的輸出。Output 應該是堆疊陣列中最頂層的元素,它列印亂數。Peek 操作應該列印用戶輸入的堆疊陣列中最頂層的元素。
例如:
----------------------------------------
ARRAY OF STACK
----------------------------------------
[1] PUSH
[2] POP
[3] PEEK
[4] DISPLAY
[5] EXIT
----------------------------------------
Enter you Choice: 1
----------------------------------------
Enter element to add: Jennie
----------------------------------------
ARRAY OF STACK
----------------------------------------
[1] PUSH
[2] POP
[3] PEEK
[4] DISPLAY
[5] EXIT
----------------------------------------
Enter you Choice: 1
----------------------------------------
Enter element to add: Lisa
----------------------------------------
ARRAY OF STACK
----------------------------------------
[1] PUSH
[2] POP
[3] PEEK
[4] DISPLAY
[5] EXIT
----------------------------------------
Enter you Choice: 3
The top most element is 4229504
輸出應該是“最頂層的元素是麗莎”如何更正這個?我需要列印用戶輸入的堆疊中最頂層的元素。在 peek 操作中,我還在“if(x != -1)”中收到“指標和整數之間的警告比較”作為警告。
uj5u.com熱心網友回復:
您的堆疊a是一個字串陣列,top 是當前位置:
char *peek() {
if(top == -1) {
printf("\n \t STACK UNDERFLOW");
return NULL;
}
printf("\n The top most element is %s", a[top]);
return a[top];
}
這是一個示例運行:
----------------------------------------
ARRAY OF STACK
----------------------------------------
[1] PUSH
[2] POP
[3] PEEK
[4] DISPLAY
[5] EXIT
----------------------------------------
Enter you Choice: 1
----------------------------------------
Enter element to add: test
----------------------------------------
ARRAY OF STACK
----------------------------------------
[1] PUSH
[2] POP
[3] PEEK
[4] DISPLAY
[5] EXIT
----------------------------------------
Enter you Choice: 3
The top most element is test
x似乎是臨時變數,對于需要它的函式來說應該是區域的。一般來說,消除全域變數是個好主意。創建一個結構來保存堆疊狀態,并將指向該結構的指標傳遞給每個函式。考慮將 UI 與執行操作的函式分開。在這種情況下,將printf()移至main()。這使您可以輕松地重用您的功能。例如,pop() 可以寫成char *data = peek(); if(data) top--; return data;. 檢查回傳值,scanf()否則您可能正在處理未定義的資料。
uj5u.com熱心網友回復:
printf("\n The top most element is: ");
strcpy(x,a[top]);
printf("%s",x);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/536617.html
標籤:数组C堆
上一篇:C中的純指標表示法
