1. 程式人生 > 其它 >棧的兩種實現(陣列--鏈式)

棧的兩種實現(陣列--鏈式)

技術標籤:資料結構java資料結構

陣列實現

package com.stack;

public class Stack_array {
	private int[] s;//棧陣列
	private int len;
	
	public Stack_array()
	{
		s = new int[10];//初始化大小 10
	}
	
	public Stack_array(int num)
	{
		s = new int[num];//初始化大小 num
	}
	
	/*
	 * 壓入棧
	 */
	public void push(int val){
		if(len >= s.length)
//棧滿 { //擴充套件棧空間 int[] ns = s.clone(); s = new int[ns.length+10];//一次拓展10個 for(int i = 0;i<ns.length;i++) { s[i] = ns[i]; } s[len++] = val;//新值入棧 }else { s[len++] = val; } } /* *彈出棧頂元素 */ public int pop(){ if(len != 0) return s[--len]; else {
System.out.print("棧空"); return 0; } } /* * 檢視棧頂元素 */ public int peak(){ if(len != 0) return s[len-1]; else { System.out.print("棧空"); return 0; } } /* * 檢視棧長度 */ public int size(
){ return len; } /* * 判斷棧是否為空 */ public boolean isEmpty() { return len==0; } }

鏈式實現

package com.stack;

public class Stack_link {
	 class Node {
	        public int val;
	        public Node next;
	        public Node(int val)
	        {
	            this.val = val;
	        }
	        
	        public Node()
	        {
	        	
	        }
	    }
	    
	 	private Node top;
	 	private int len;
	 	
	 	public Stack_link()
	 	{
	 		
	 	}
	 	
	 	/*
	 	 * 壓入棧
	 	 */
	    public void push(int val){
	    	Node node = new Node(val);
	    	node.next = top;
	    	top = node;
	    	len++;
	    }
	    
	    /*
	     * 彈出棧頂元素
	     */
	    public int pop(){
	    	if(top == null)
	    	{
	    		System.out.print("棧空");
	    		return 0;
	    	}else
	    	{
	    		int val = top.val;
	    		top = top.next;
	    		len--;
	    		return val;
	    	}
	    }
	    
	    /*
	     * 檢視棧頂元素
	     */
	    public int peak(){
	    	if(top==null)
	    	{
	    		System.out.print("棧空");
	    		return 0;
	    	}else
	    	{
	    		return top.val;
	    	}
	    }
	    
	    /*
	     *檢視棧長度 
	     */
	    public int size(){
	    	return len;
	    }
	    
	    /*
	     * 判斷棧是否為空
	     */
	    public boolean isEmpty()
	    {
	    	return len == 0;
	    }
}