1. 程式人生 > >線性結構(二)--- 棧

線性結構(二)--- 棧

 棧: 先進後出
  拿出資料後位置置空(棧長度減1)

1
public class MyStack { 2 3 //棧的底層我們使用陣列來儲存資料 4 int[] elements; 5 6 7 public MyStack() { 8 elements=new int[0]; 9 } 10 11 //壓入元素 12 public void push(int element){ 13 //建立一個新的陣列 14 int[] newarr=new int[elements.length+1];
15 //把原陣列中的元素賦值到新陣列中 16 for(int i=0;i<elements.length;i++){ 17 newarr[i]=elements[i]; 18 } 19 //把新增的元素放入新陣列中 20 newarr[elements.length]=element; 21 //使用新陣列替換舊陣列 22 elements=newarr; 23 } 24 //取出棧頂元素 25
public int pop(){ 26 if(elements.length==0){ 27 throw new RuntimeException("stack is empty"); 28 } 29 //取出陣列最後一個元素 30 int u=elements[elements.length-1]; 31 //建立一個新的陣列 32 int[] newarr=new int[elements.length-1]; 33 //原陣列中除了最後一個元素的其他元素都放入新的陣列中
34 for(int i=0;i<newarr.length;i++){ 35 newarr[i]=elements[i]; 36 } 37 //替換陣列 38 elements=newarr; 39 //返回棧頂元素 40 return u; 41 } 42 //檢視棧頂元素 43 public int peek(){ 44 if(elements.length==0){ 45 throw new RuntimeException("stack is empty"); 46 } 47 return elements[elements.length-1]; 48 } 49 //判斷棧是否為空 50 public boolean isEmty(){ 51 return elements.length==0; 52 } 53 54 }