English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

1.使用鏈結串列建立堆疊。撰寫程式可以讓使用者由鍵盤輸入元素,在堆疊中新增及刪除元素。此外當堆疊空的時候要拒絕使用者刪除元素。每當堆疊有增加或刪除元素的動作完成後,程式都必須顯示目前還在堆疊中的元素之排列情況。

以上為題目,請問大大們該怎麼做。

2005-12-09 16:37:08 · 2 個解答 · 發問者 Anonymous in 電腦與網際網路 程式設計

我用的編譯器是virtual c++,我照你所說的該了一下,但還是也1個錯,1個警告,麻煩大大你看一下。
(1)error C2065: 'system' : undeclared identifier
(2)function should return a value; 'void' return type assumed

2005-12-10 03:09:34 · update #1

我還有個問題要請教大大一下:
你這程式的寫法算是堆疊用鏈結串列來表示嗎?若是用鏈結串列來表示的話那不是不需要預設堆疊的大小,若有一個節點A,若我加入一節點B則是加在A的前面,把B- link=A,反正就是增加跟刪除都在同一端,這樣才叫用堆疊表示成鏈結串列列,不知我說的對不對?

2005-12-10 08:30:43 · update #2

那改malloc()宣告而用陣列會很難嗎?
我學的是c++而不是c,所以看c的程式比較不適應,且我才只學過陣列跟涵式外加一點指標,像要用class這種我就不會了。所以麻煩大大能否幫我改一下@@"

2005-12-11 04:08:06 · update #3

如果你有空的話順便幫我改一下不管是輸入或輸出,都會直接列出目前堆疊中的狀態。

2005-12-13 15:14:27 · update #4

這題我在等你幾天,希望你能幫我完成。

2005-12-13 15:15:21 · update #5

2 個解答

這題在另一個地方我已幫你解決,請考參網址:
http://tw.knowledge.yahoo.com/question/?qid=1405120915827
話說這題花了我不少時間,你要給我40點的話,我會更高興^___^


貼上原有內容:
變數stack_size是堆疊的大小,預設是10,可以自己開,其他程式不用動
另外若複製程式碼時,請將全形空白改成Tab,不然編譯會錯誤
建議用Word將全形空白全部取代成2個半形空白

#include

#define stack_size 10
int stack_flag=0;

struct list{
 int ele;
 struct list *ptr;
};

int main(){
 struct list stack[stack_size],*p;
 int cmd,n,i;
 int exit_pro=0;

 while(1){
  printf("堆疊模擬:\n");
  printf("請輸入數字 1.新增元素 2.刪除元素 3.列印元素 若要結束請輸入其他數字:");
  scanf("%d",&cmd);
  system("cls");

  switch(cmd){
  case 1:
   printf("請輸入插入的元素:");
   scanf("%d",&n);

   if(stack_flag < stack_size){
    stack[stack_flag].ele=n;
    if(stack_flag) stack[stack_flag-1].ptr=&stack[stack_flag];
    stack[stack_flag++].ptr=NULL;
    
   }else printf("堆疊已滿,無法新增!!\n");
   break;
  case 2:
   if(stack_flag){
    stack[--stack_flag].ptr=NULL;
    printf("堆疊已刪除\n");
   }else printf("堆疊目前是空的,無法刪除!!\n");
   break;
  case 3:
   if(!stack_flag)
    printf("目前堆疊沒有任何元素\n");
   else{
    p=&stack[0];
    i=0;
    while(p){
     printf("元素%d的值:%d\n",i,p->ele);
     p=p->ptr;
     i++;
    }
   }
   break;
  default:
   exit_pro=1;
  }
  printf("\n");

  if(exit_pro) break;
 }
}

2005-12-10 10:08:27 補充:
真剛好,我也是用VC++跑
不然你試試看把system("cls");拿掉
int main()改成void main()
應該就沒1錯誤、1警告

2005-12-10 22:39:00 補充:
是沒錯,我只是沒用malloc()宣告而用陣列
我想這部分你還是可以參考

堆疊是先進後出
也就是你說的新增、刪除都在同端

2005-12-13 00:10:05 補充:
C++本身可以寫C
只不過函式庫要改
#include 改成
#include

print就是cout
scanf就是cin

最近比較小忙一點,希望我有空的時候來得及幫你改

2005-12-09 17:35:21 · answer #1 · answered by  Joybo 5 · 0 0

回應 2005-12-10 08:09:34 (1)error C2065: 'system' : undeclared identifier
#include
int system(const char *);

2005-12-14 15:24:10 · answer #2 · answered by Big_John-tw 7 · 0 0

fedest.com, questions and answers