java链式栈_Java栈之链式栈存储结构实现
一、鏈棧
采用單鏈表來保存棧中所有元素,這種鏈式結構的棧稱為鏈棧。
二、棧的鏈式存儲結構實現
package com.ietree.basic.datastructure.stack;
/**
* 鏈棧
*
* Created by ietree
* 2017/4/29
*/
public class LinkStack {
// 定義一個內部類Node,Node實例代表鏈棧的節點
private class Node {
// 保存節點的數據
private T data;
// 指向下個節點的引用
private Node next;
// 無參構造器
public Node() {
}
// 初始化全部屬性的構造器
public Node(T data, Node next) {
this.data = data;
this.next = next;
}
}
// 保存該鏈棧的棧頂元素
private Node top;
// 保存該鏈棧中已包含的節點數
private int size;
// 創建空鏈棧
public LinkStack() {
// 空鏈棧,top的值為null
top = null;
}
// 以指定數據元素來創建鏈棧,該鏈棧只有一個元素
public LinkStack(T element) {
top = new Node(element, null);
size++;
}
// 返回鏈棧的長度
public int length() {
return size;
}
// 進棧
public void push(T element) {
// 讓top指向新創建的元素,新元素的next引用指向原來的棧頂元素
top = new Node(element, top);
size++;
}
// 出棧
public T pop() {
Node oldTop = top;
// 讓top引用指向原棧頂元素的下一個元素
top = top.next;
// 釋放原棧頂元素的next引用
oldTop.next = null;
size--;
return oldTop.data;
}
// 訪問棧頂元素,但不刪除棧頂元素
public T peek(){
return top.data;
}
// 判斷鏈棧是否為空棧
public boolean empty() {
return size == 0;
}
// 請空鏈棧
public void clear() {
top = null;
size = 0;
}
public String toString() {
// 鏈棧為空棧時
if (empty()) {
return "[]";
} else {
StringBuilder sb = new StringBuilder("[");
for (Node current = top; current != null; current = current.next) {
sb.append(current.data.toString() + ", ");
}
int len = sb.length();
return sb.delete(len - 2, len).append("]").toString();
}
}
}
測試類:
package com.ietree.basic.datastructure.stack;
/**
* Created by ietree
* 2017/4/29
*/
public class LinkStackTest {
public static void main(String[] args) {
LinkStack stack = new LinkStack();
stack.push("aaaa");
stack.push("bbbb");
stack.push("cccc");
stack.push("dddd");
System.out.println(stack);
System.out.println("訪問棧頂元素:" + stack.peek());
System.out.println("第一次彈出棧頂元素:" + stack.pop());
System.out.println("第二次彈出棧頂元素:" + stack.pop());
System.out.println("兩次pop之后的棧:" + stack);
}
}
程序輸出:
[dddd, cccc, bbbb, aaaa]
訪問棧頂元素:dddd
第一次彈出棧頂元素:dddd
第二次彈出棧頂元素:cccc
兩次pop之后的棧:[bbbb, aaaa]
總結
以上是生活随笔為你收集整理的java链式栈_Java栈之链式栈存储结构实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java scanner 类_Java
- 下一篇: java查找和替换_java敏感字查找和