Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- =======================================
- package stack;
- public class stack {
- private int top = 0; //堆疊頂端指標
- private int[] stackArray;//堆疊用的陣列
- public stack(){
- this(10);
- }
- public stack(int size) {
- stackArray = new int[size];
- }
- public void push(int num){
- //將值放入堆疊頂端
- top++;
- for(int i=top-1;i>0;i--)
- {
- stackArray[i]=stackArray[i-1];
- }
- stackArray[0]=num;
- //堆疊頂端指標加ㄧ
- }
- public int pop(){
- //回傳堆疊頂端的值並將堆疊頂端指標減ㄧ
- int temp=stackArray[0];
- top--;
- for(int i=1;i<stackArray.length;i++)
- {
- stackArray[0]=stackArray[i];
- }
- return temp;
- }
- public void popAll(){
- //彈出堆疊內所有資料(可以順便把值印出來,寫main()的時候方便使用)
- top=0;
- for(int i=0;i<stackArray.length;i++)
- { if(stackArray[i]==0)
- continue;
- System.out.print(stackArray[i]+" ");
- stackArray[i]=0;
- }
- System.out.println();
- }
- public int getTop() {
- return this.top;
- }
- public int getSize()
- {
- return stackArray.length;
- }
- }
- =======================================
- package stack;
- public class Object {
- private int top = 0; //堆疊頂端指標
- private String[] stackArray;//堆疊用的陣列
- public Object(){
- this(10);
- }
- public Object(int size) {
- stackArray = new String[size];
- }
- public void push(String num){
- //將值放入堆疊頂端
- top++;
- for(int i=top-1;i>0;i--)
- {
- stackArray[i]=stackArray[i-1];
- }
- stackArray[0]=num;
- //堆疊頂端指標加ㄧ
- }
- public String pop(){
- //回傳堆疊頂端的值並將堆疊頂端指標減ㄧ
- String temp=stackArray[0];
- top--;
- for(int i=1;i<stackArray.length;i++)
- {
- stackArray[0]=stackArray[i];
- }
- return temp;
- }
- public void popAll(){
- //彈出堆疊內所有資料(可以順便把值印出來,寫main()的時候方便使用)
- top=0;
- for(int i=0;i<stackArray.length;i++)
- { if(stackArray[i]==null)
- continue;
- System.out.print(stackArray[i]+" ");
- stackArray[i]=null;
- }
- System.out.println();
- }
- public int getTop() {
- return this.top;
- }
- public int getSize() {
- return stackArray.length;
- }
- }
- =======================================
- package stack;
- import java.util.Scanner;
- public class stackmain {
- public static void main(String[] args) {
- Scanner scn = new Scanner(System.in);
- stack stacka = new stack();
- Object object = new Object();
- //Test1
- System.out.println("======Test1======");
- System.out.printf("請輸入欲放入堆疊的值(輸入-99表示結束):");
- int input1;
- while(true)
- {
- input1 = scn.nextInt();
- if(input1==-99)
- break;
- stacka.push(input1);
- }
- System.out.print("輸出的堆疊值依序為:");
- stacka.popAll();
- //Test2
- System.out.println("======Test2======");
- System.out.printf("請輸入欲放入堆疊的值(輸入-99表示結束):");
- String input2;
- while(true)
- {
- input2 = scn.next();
- if(input2.equals("-99"))
- break;
- object.push(input2);
- }
- System.out.print("輸出的堆疊值依序為:");
- object.popAll();
- }
- }
- =======================================
- package stack;
- import java.util.Scanner;
- public class safeStack extends stack {
- public safeStack(){
- super();
- }
- public safeStack(int size){
- super(size);
- }
- public void push(int num){
- if(getTop()==getSize())
- {
- System.out.println("堆疊已滿,無法存入"+num);
- }
- else
- super.push(num);
- }
- public static void main(String[] args)
- {
- Scanner scn = new Scanner(System.in);
- System.out.print("請輸入欲放入堆疊的值(輸入-99表示結束):");
- int input1;
- stack stackb = new safeStack(5);
- while(true)
- {
- input1 = scn.nextInt();
- if(input1==-99)
- break;
- stackb.push(input1);
- }
- System.out.print("輸出的堆疊值依序為:");
- stackb.popAll();
- }
- }
- =======================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement