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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

顺序栈,链栈

發(fā)布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 顺序栈,链栈 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

棧與鏈棧

  • 一,順序棧
    • 1.1 IStack棧接口
    • 1.2,順序棧增刪改查的實現
    • 1.3,測試順序棧
  • 二,鏈棧
    • 2.1,存放數據的結點
    • 2.2,鏈棧的實現
    • 2.3測試鏈棧

一,順序棧

1.1 IStack棧接口

public interface IStack {public void clear();public boolean isEmpty();public int length();public Object peek(); // 返回棧頂元素public void push(Object x); // 入棧public Object pop(); // 將棧頂元素出棧并返回public void display(); // 輸出棧中所有元素 }

1.2,順序棧增刪改查的實現

public class SeqStack implements IStack {private Object[] stackElem; // 順序棧存儲空間private int top; // 指向棧頂元素的下一個存儲單元位置private int maxSize; // 空間 public SeqStack(int maxSize) {top = 0;this.maxSize = maxSize;stackElem = new Object[maxSize];}// 將棧置空public void clear() {top = 0; }// 判斷棧是否為空public boolean isEmpty() {return top == 0;}// 返回棧中元素的個數public int length() {return top;}// 返回棧頂元素public Object peek() {if (!isEmpty())return stackElem[top - 1];return null;}// 入棧 后進public void push(Object x) {if (top == maxSize) {System.out.println("棧已滿");return;}stackElem[top] = x;top ++;}@Overridepublic Object pop() {if (!isEmpty()) {top --;return stackElem[top];}return null;}// 輸出棧中所有元素public void display() {for (int i = top - 1; i >= 0; i--) {System.out.print(stackElem[i] + " "); }System.out.println();}}

1.3,測試順序棧

public class TestSeqStack {public static void main(String[] args) {SeqStack seqStack = new SeqStack(3);seqStack.push("abc");seqStack.push("def");seqStack.push("ghi");// 返回棧頂元素Object peekEle = seqStack.peek();System.out.println("棧頂元素" + peekEle);// 出棧seqStack.pop();System.out.println("出棧后:");// 遍歷棧seqStack.display();}} /** 棧頂元素ghi 出棧后: def abc */

二,鏈棧

2.1,存放數據的結點

public class Node {public Object data; // 存放節(jié)點數據值public Node next; // 存放后繼節(jié)點public Node() {this(null, null);}// 只有節(jié)點值的構造函數public Node(Object data) {this(data, null);}// 帶有節(jié)點值和后繼節(jié)點的構造函數public Node(Object data, Node next) {this.data = data;this.next = next;} }

2.2,鏈棧的實現

// 實現棧接口 public class LinearStack implements IStack {private Node top; // 棧頂元素@Overridepublic void clear() {// 將棧頂置空top = null;}@Overridepublic boolean isEmpty() {// 棧是否為空return top == null;}@Overridepublic int length() {// 棧的長度Node p = top;int length = 0;while (p != null) {p = p.next;length ++;}return length;}@Overridepublic Object peek() {// 返回棧頂元素if (!isEmpty())return top.data;return null;}@Overridepublic void push(Object x) {// 入棧Node s = new Node(x);s.next = top;top = s;}@Overridepublic Object pop() {// 出棧if (isEmpty()) {return null;}Node p = top;top = top.next; // 棧頂的第二個元素頂替return p.data;}@Overridepublic void display() {Node p = top; // p.next 找下一個元素, 要不然死循環(huán)while (p != null) {System.out.print(p.data + "\t");p = p.next;}/*while (top != null) {System.out.print(top.data + "\t");top = top.next;}*/}}

2.3測試鏈棧

public class TestLinearStack {public static void main(String[] args) {// 測試鏈棧LinearStack ls = new LinearStack();// 入棧ls.push(1);ls.push(3);ls.push(5);ls.push(7);// 返回棧頂元素System.out.println("棧頂元素:" + ls.peek());// 出棧并返回System.out.println("出棧元素:" + ls.pop());// 遍歷棧ls.display();}}/** 棧頂元素:7 出棧元素:7 5 3 1 */

總結

以上是生活随笔為你收集整理的顺序栈,链栈的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。