欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java順序棧和鏈棧

姚詩涵1年前6瀏覽0評論

棧是一種經常使用的數據結構,具有先進先出的特點。在Java中,棧分為順序棧和鏈棧兩種類型。它們的實現方式不同,但在棧的基本操作上具有相似性。

順序棧

public class ArrayStack {
private Object[] data;  // 數據存儲區(qū)
private int top;  // 棧頂指針
public ArrayStack(int capacity) {
this.data = new Object[capacity];
this.top = -1;
}
// 入棧操作
public boolean push(Object element) {
if (isFull()) {
return false;
}
data[++top] = element;
return true;
}
// 出棧操作
public Object pop() {
if (isEmpty()) {
return null;
}
return data[top--];
}
// 獲取棧頂元素
public Object peek() {
if (isEmpty()) {
return null;
}
return data[top];
}
// 判斷是否為空棧
public boolean isEmpty() {
return top == -1;
}
// 判斷是否為滿棧
public boolean isFull() {
return top == data.length - 1;
}
}

順序棧使用數組作為數據存儲區(qū),棧頂指針top初始化為-1。在入棧操作中,將棧頂指針先加1,再將元素賦值到數據存儲區(qū)中。在出棧操作中,先返回棧頂元素,再將棧頂指針減1。棧頂指針為-1時,表示棧為空。

鏈棧

public class LinkedStack {
private Node top;  // 棧頂結點
public LinkedStack() {
this.top = null;
}
// 入棧操作
public boolean push(Object element) {
Node newNode = new Node(element);
newNode.next = top;
top = newNode;
return true;
}
// 出棧操作
public Object pop() {
if (isEmpty()) {
return null;
}
Object data = top.data;
top = top.next;
return data;
}
// 獲取棧頂元素
public Object peek() {
if (isEmpty()) {
return null;
}
return top.data;
}
// 判斷是否為空棧
public boolean isEmpty() {
return top == null;
}
private class Node {
private Object data;
private Node next;
public Node(Object data) {
this.data = data;
}
}
}

鏈棧通過鏈表結構來實現,棧頂指針為首結點。在入棧操作中,新建一個結點,將該結點的next指向當前棧頂結點,然后將該結點作為新的棧頂結點。在出棧操作中,先返回棧頂元素,再將棧頂指針指向下一個結點。棧頂指針為null時,表示棧為空。

上一篇div。first
下一篇div。2難度