日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java链式栈_Java栈之链式栈存储结构实现

發(fā)布時間:2025/3/19 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java链式栈_Java栈之链式栈存储结构实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、鏈棧

采用單鏈表來保存棧中所有元素,這種鏈式結(jié)構(gòu)的棧稱為鏈棧。

二、棧的鏈式存儲結(jié)構(gòu)實現(xiàn)

package com.ietree.basic.datastructure.stack;

/**

* 鏈棧

*

* Created by ietree

* 2017/4/29

*/

public class LinkStack {

// 定義一個內(nèi)部類Node,Node實例代表鏈棧的節(jié)點

private class Node {

// 保存節(jié)點的數(shù)據(jù)

private T data;

// 指向下個節(jié)點的引用

private Node next;

// 無參構(gòu)造器

public Node() {

}

// 初始化全部屬性的構(gòu)造器

public Node(T data, Node next) {

this.data = data;

this.next = next;

}

}

// 保存該鏈棧的棧頂元素

private Node top;

// 保存該鏈棧中已包含的節(jié)點數(shù)

private int size;

// 創(chuàng)建空鏈棧

public LinkStack() {

// 空鏈棧,top的值為null

top = null;

}

// 以指定數(shù)據(jù)元素來創(chuàng)建鏈棧,該鏈棧只有一個元素

public LinkStack(T element) {

top = new Node(element, null);

size++;

}

// 返回鏈棧的長度

public int length() {

return size;

}

// 進棧

public void push(T element) {

// 讓top指向新創(chuàng)建的元素,新元素的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]

總結(jié)

以上是生活随笔為你收集整理的java链式栈_Java栈之链式栈存储结构实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。