java 使用鏈表來模擬棧的入棧出棧操作


棧:后進先出;最后一個放入堆棧中的物體總是被最先拿出來。

使用鏈表來模擬棧的入棧出棧操作。

1.節點類代碼

public class Entry<T> {
private T value;
private Entry<T> next;
public Entry() {
    this(null);
}
public Entry(T value) {
    this.value=value;
    this.next=null;
}
    
public void setValue(T value) {
    this.value=value;
}
public void setNext(Entry<T> next) { this.next=next; } public T getValue() { return value; } public Entry<T> getNext(){ return next; } }

2.節點的入棧出棧方法代碼

public class Link<T> {//鏈表實現棧,先進后出
private Entry<T> headEntry;
private int size=0;
public Link() {
    headEntry =new Entry<>();
}
public void pop() {//出棧
    if(headEntry.getNext()!=null) {
    headEntry.getNext().setValue(null);
    headEntry.setNext(headEntry.getNext().getNext());
    size--;
    }else {
        return;
    }
    
}
public void push(T value) {//入棧
    Entry<T> newEntry=new Entry<>(value);
    if(headEntry.getNext()!=null) {
        newEntry.setNext(headEntry.getNext());
        
    }
        headEntry.setNext(newEntry);
        size++;
    
}


public void show(){//打印節點
    if(headEntry.getNext()==null) {
        return;
    }
    for(Entry<T> p = headEntry.getNext();p!=null;p=p.getNext()){
        System.out.print(p.getValue()+" ");
    }
    System.out.println();
}
}

3.測試類代碼

public class Main {
public static void main(String args[]) {
    Link<String> ll=new Link<>();
    ll.push("1");//入棧
    ll.push("2");
    ll.push("3");
    ll.push("4");
    ll.push("5");
    ll.push("6");
    ll.push("7");
    ll.push("8");
    ll.show();//打印棧內元素
    ll.pop();//彈出棧頂元素
    ll.show();
    ll.pop();
    ll.show();
}
}

4.測試結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM