找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
請尊重及感激所有版主付出和奉獻感激所有對伊莉作出奉獻的人搞笑、娛樂、精彩的影片讓你看
fc2一拳超人明日花催眠出包王女vr高中
無口な爆パラレルpray]cawd 64黃采潔波多野結整個小鎮

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[簡]單人房、日照一般

[繁]怪人的沙拉碗05-

(4月新番)[繁]怪獸八

(4月新番)[繁]戰隊大

[繁]迷宮飯12~15-

[繁]戰隊大失格02-
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 1530|回復: 2
打印上一主題下一主題

[討論]【以解決】急~誰能幫我修改這個程式!!![複製鏈接]

Rank: 2Rank: 2

帖子
198
積分
280 點
潛水值
15390 米
跳轉到指定樓層
樓主
發表於 2011-10-29 02:03 AM|只看該作者|倒序瀏覽
本帖最後由 789789889 於 2011-12-5 07:00 PM 編輯

因為不能po上來所以用附件!!





【使兩個堆疊可以共用同一個一維陣列】

(a)
兩堆疊皆存放整數,分別從此一維陣列的兩端(0與Max-1)朝另一端開始操作。

...
瀏覽完整內容,請先 註冊登入會員
附件: 你需要登錄才可以下載或查看附件。沒有帳號?註冊
分享分享0收藏收藏0支持支持0

使用道具檢舉

Rank: 1

帖子
72
積分
175 點
潛水值
15061 米
頭香
發表於 2011-10-31 09:38 PM|只看該作者
本帖最後由 good5209 於 2011-11-1 02:39 AM 編輯

順便整理class架構、code style和輸出文字
  1. import java.util.Scanner;

  2. /**
  3. * 共用固定大小陣列之雙頭堆疊
  4. */
  5. public class TestStack {
  6.     private static Scanner keyboard = new Scanner(System.in);

  7.     // 主函數
  8.     public static void main(String args[]) {
  9.         int option = 0;
  10.         Stack obj = new Stack(10); // 設定Stack陣列大小
  11.         do {
  12.             System.out.println("*******堆疊的選單*******\n"
  13.                              + "        1. Insert Left\n"
  14.                              + "        2. Insert Right\n"
  15.                              + "        3. Delete Left\n"
  16.                              + "        4. Delete Right\n"
  17.                              + "        5. List\n"
  18.                              + "        6. Exit\n"
  19.                              + "***********************\n"
  20.                              + "Msg: 請選擇您要執行的項目:");

  21.             try {
  22.                 option = Integer.valueOf(keyboard.nextLine());
  23.             } catch (NumberFormatException e) {
  24.                 System.out.println("Not a correctly number.\nTry again.\n");
  25.             }
  26.             String popString = null;
  27.             String[] leftStack = null, rightStack = null;
  28.             switch (option) {
  29.             case 1:
  30.                 System.out.println("請輸入一筆資料(字串的格式):");
  31.                 if (!obj.pushLeft(keyboard.nextLine())) { // 新增函數
  32.                     System.out.println("Msg: 堆疊是滿的!");
  33.                 }
  34.                 break;
  35.             case 2:
  36.                 System.out.println("請輸入一筆資料(字串的格式):");
  37.                 if (!obj.pushRight(keyboard.nextLine())) { // 新增函數
  38.                     System.out.println("Msg: 堆疊是滿的!");
  39.                 }
  40.                 break;
  41.             case 3:
  42.                 popString = obj.popLeft();
  43.                 if (popString != null) {
  44.                     System.out.println("Msg: Left " + popString + " 己被刪除!");
  45.                     break;
  46.                 }
  47.                 System.out.println("Msg: 堆疊是空的 !");
  48.                 break;
  49.             case 4:
  50.                 popString = obj.popRight();
  51.                 if (popString != null) {
  52.                     System.out.println("Msg: Right " + popString + " 己被刪除!");
  53.                     break;
  54.                 }
  55.                 System.out.println("Msg: 堆疊是空的 !");
  56.                 break;
  57.             case 5: // 輸出函數
  58.                 leftStack = obj.getLeft();
  59.                 rightStack = obj.getRight();
  60.                 System.out.println("Msg: Left stack");
  61.                 printStack(leftStack);
  62.                 System.out.println("Msg: Right stack");
  63.                 printStack(rightStack);
  64.                 break;
  65.             case 6:
  66.                 System.exit(0);
  67.                 break;
  68.             default:
  69.                 break;
  70.             }
  71.         } while (true);
  72.     }

  73.     private static void printStack(String[] dataStack) {
  74.         if (dataStack != null) {
  75.             System.out.println("Msg: 堆疊有下列的資料:\n"
  76.                              + " --------Top-------");
  77.             for (int i = dataStack.length - 1; i >= 0; i--) {
  78.                 System.out.println(i + ": " + dataStack[i]);
  79.             }
  80.             System.out.println(" -------Bottom-----\n"
  81.                              + "Msg: 堆疊共有 " + dataStack.length + "筆資料。");
  82.             return;
  83.         }
  84.         System.out.println("Msg: The stack is empty!");
  85.     }
  86. }

  87. class Stack {
  88.     private int arraySize = 10; // 預設
  89.     private int leftTop = 0, rightTop = arraySize - 1;
  90.     private String[] dataArray = null;

  91.     public Stack() {
  92.         dataArray = new String[arraySize];
  93.     }

  94.     public Stack(int arraySize) {
  95.         this.arraySize = arraySize;
  96.         rightTop = arraySize - 1;
  97.         dataArray = new String[arraySize];
  98.     }

  99.     // 推入函數
  100.     public boolean pushLeft(String data) {
  101.         if (!arrayIsFull()) {
  102.             dataArray[leftTop] = data;
  103.             leftTop++;
  104.             return true;
  105.         }
  106.         return false; // 當堆疊已滿,返回錯誤
  107.     }

  108.     public boolean pushRight(String data) {
  109.         if (!arrayIsFull()) {
  110.             dataArray[rightTop] = data;
  111.             rightTop--;
  112.             return true;
  113.         }
  114.         return false; // 當堆疊已滿,返回錯誤
  115.     }

  116.     private boolean arrayIsFull() {
  117.         return (leftTop > rightTop);
  118.     }

  119.     // 彈出函數
  120.     public String popLeft() {
  121.         if (leftTop > 0) {
  122.             leftTop--;
  123.             return dataArray[leftTop];
  124.         }
  125.         return null; // 當堆疊沒有資料存在,返回null
  126.     }

  127.     public String popRight() {
  128.         if (rightTop < arraySize - 1) {
  129.             rightTop++;
  130.             return dataArray[rightTop];
  131.         }
  132.         return null; // 當堆疊沒有資料存在,返回null
  133.     }

  134.     // 輸出函數
  135.     public String[] getLeft() {
  136.         if (leftTop > 0) {
  137.             String[] returnResult = new String[leftTop];
  138.             for (int i = 0; i < returnResult.length; i++) {
  139.                 returnResult[i] = dataArray[i];
  140.             }
  141.             return returnResult;
  142.         }
  143.         return null;
  144.     }

  145.     public String[] getRight() {
  146.         if (rightTop < arraySize - 1) {
  147.             String[] returnResult = new String[(arraySize - 1) - rightTop];
  148.             for (int i = returnResult.length - 1; i >= 0; i--) {
  149.                 returnResult[i] = dataArray[(arraySize - 1) - i];
  150.             }
  151.             return returnResult;
  152.         }
  153.         return null;
  154.     }
  155. }
複製代碼
...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

Rank: 2Rank: 2

帖子
198
積分
280 點
潛水值
15390 米
3
發表於 2011-12-5 07:00 PM|只看該作者
謝謝你的幫忙!!

感恩!!  我會把他搞懂的!!
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部