스 택 의 실현 (배열 과 링크 구현)

5837 단어 데이터 구조
 (    ),    (LIFO)      ,        。
    push             。
    pop              
    peak          
package com.dengdi.arraystack;

public interface StackADT{
    /**
     *           
     * @param element
     */
    public void push(T element);
    /**
     *          
     * @return
     */
    public T pop();
    /**
     *       
     * @return
     */
    public T peek();
}
             :
    (1)            (             );
    (2)          0 ;
    (3)                 ;
    (4)    top               。
package com.dengdi.arraystack;
/**
 *           
 * @author dengdi
 *
 * @param 
 */
public class ArrayStack implements StackADT{
    private int DEFAULT_LENGTH=100;
    private int point;
    private T[] stack;

    public ArrayStack() {
        point=0;
        stack=(T[]) new Object[DEFAULT_LENGTH];//          
    }

    @Override
    public void push(T element) {
        stack[point]=element;
        point++;
    }

    @Override
    public T pop() {
        point--;
        T result=stack[point];
        stack[point]=null;
        return result;
    }

    @Override
    public T peek() {

        return stack[point-1];
    }   
}
             ,                ,                 。                    。
      :                    。      next       。
               ,                 。
package com.dengdi.arraystack;
//     
public class LinkedNode {
    private LinkedNode next;//      
    private T element;
    public LinkedNode() {
        this.next=null;
        this.element=null;
    }
    public LinkedNode(T element) {
        this.next=null;
        this.element = element;
    }
    public LinkedNode getNext() {
        return next;
    }
    public void setNext(LinkedNode next) {
        this.next = next;
    }
    public T getElement() {
        return element;
    }
    public void setElement(T element) {
        this.element = element;
    }

}
           :
                       :    、           。
                  ,             ,      next                。  ,                       。
package com.dengdi.arraystack;  
/**
 *       
 * @author dengdi
 *
 * @param 
 */

public class LinkedStack<T> implements StackADT<T>{
    private int count;
    private LinkedNode top;
    @Override
    public void push(T element) {
        LinkedNode temp=new LinkedNode(element);
        temp.setNext(top);
        top=temp;
        count++;
    }

    @Override
    public T pop() {
        T result=top.getElement();
        top=top.getNext();
        count--;
        return result;
    }

    @Override
    public T peek() {
        T result=top.getElement();
        return result;
    }

}

좋은 웹페이지 즐겨찾기