Update the chapter of stack and queue.

This commit is contained in:
krahets 2023-03-12 04:14:36 +08:00
parent 050b922f8a
commit 82bbdd444d
5 changed files with 27 additions and 35 deletions

View file

@ -26,7 +26,7 @@ int main() {
cout << "栈顶元素 top = " << top << endl; cout << "栈顶元素 top = " << top << endl;
/* 元素出栈 */ /* 元素出栈 */
stack.pop(); stack.pop(); // 无返回值
cout << "出栈元素 pop = " << top << ",出栈后 stack = "; cout << "出栈元素 pop = " << top << ",出栈后 stack = ";
PrintUtil::printStack(stack); PrintUtil::printStack(stack);

View file

@ -11,23 +11,22 @@ import java.util.*;
public class stack { public class stack {
public static void main(String[] args) { public static void main(String[] args) {
/* 初始化栈 */ /* 初始化栈 */
// Java 推荐将 ArrayList 当作栈来使用 Stack<Integer> stack = new Stack<>();
List<Integer> stack = new ArrayList<>();
/* 元素入栈 */ /* 元素入栈 */
stack.add(1); stack.push(1);
stack.add(3); stack.push(3);
stack.add(2); stack.push(2);
stack.add(5); stack.push(5);
stack.add(4); stack.push(4);
System.out.println("栈 stack = " + stack); System.out.println("栈 stack = " + stack);
/* 访问栈顶元素 */ /* 访问栈顶元素 */
int peek = stack.get(stack.size() - 1); int peek = stack.peek();
System.out.println("栈顶元素 peek = " + peek); System.out.println("栈顶元素 peek = " + peek);
/* 元素出栈 */ /* 元素出栈 */
int pop = stack.remove(stack.size() - 1); int pop = stack.pop();
System.out.println("出栈元素 pop = " + pop + ",出栈后 stack = " + stack); System.out.println("出栈元素 pop = " + pop + ",出栈后 stack = " + stack);
/* 获取栈的长度 */ /* 获取栈的长度 */

View file

@ -6,7 +6,7 @@
## 双向队列常用操作 ## 双向队列常用操作
双向队列的常用操作见下表,方法名需根据特定语言来确定。 双向队列的常用操作见下表,方法名需根据语言来确定,此处以 Java 为例
<div class="center-table" markdown> <div class="center-table" markdown>
@ -18,8 +18,6 @@
| pollLast() | 删除队尾元素 | $O(1)$ | | pollLast() | 删除队尾元素 | $O(1)$ |
| peekFirst() | 访问队首元素 | $O(1)$ | | peekFirst() | 访问队首元素 | $O(1)$ |
| peekLast() | 访问队尾元素 | $O(1)$ | | peekLast() | 访问队尾元素 | $O(1)$ |
| size() | 获取队列的长度 | $O(1)$ |
| isEmpty() | 判断队列是否为空 | $O(1)$ |
</div> </div>

View file

@ -8,7 +8,7 @@
## 队列常用操作 ## 队列常用操作
队列的常用操作见下表,方法名需根据特定语言来确定。 队列的常用操作见下表,方法名需根据语言来确定,此处以 Java 为例
<div class="center-table" markdown> <div class="center-table" markdown>
@ -16,9 +16,7 @@
| --------- | -------------------------- | -------- | | --------- | -------------------------- | -------- |
| push() | 元素入队,即将元素添加至队尾 | $O(1)$ | | push() | 元素入队,即将元素添加至队尾 | $O(1)$ |
| poll() | 队首元素出队 | $O(1)$ | | poll() | 队首元素出队 | $O(1)$ |
| front() | 访问队首元素 | $O(1)$ | | peek() | 访问队首元素 | $O(1)$ |
| size() | 获取队列的长度 | $O(1)$ |
| isEmpty() | 判断队列是否为空 | $O(1)$ |
</div> </div>

View file

@ -10,7 +10,7 @@
## 栈常用操作 ## 栈常用操作
栈的常用操作见下表(方法命名以 Java 为例) 栈的常用操作见下表,方法名需根据语言来确定,此处以 Java 为例
<div class="center-table" markdown> <div class="center-table" markdown>
@ -19,8 +19,6 @@
| push() | 元素入栈(添加至栈顶) | $O(1)$ | | push() | 元素入栈(添加至栈顶) | $O(1)$ |
| pop() | 栈顶元素出栈 | $O(1)$ | | pop() | 栈顶元素出栈 | $O(1)$ |
| peek() | 访问栈顶元素 | $O(1)$ | | peek() | 访问栈顶元素 | $O(1)$ |
| size() | 获取栈的长度 | $O(1)$ |
| isEmpty() | 判断栈是否为空 | $O(1)$ |
</div> </div>
@ -30,21 +28,20 @@
```java title="stack.java" ```java title="stack.java"
/* 初始化栈 */ /* 初始化栈 */
// 在 Java 中,推荐将 ArrayList 当作栈来使用 Stack<Integer> stack = new Stack<>();
List<Integer> stack = new ArrayList<>();
/* 元素入栈 */ /* 元素入栈 */
stack.add(1); stack.push(1);
stack.add(3); stack.push(3);
stack.add(2); stack.push(2);
stack.add(5); stack.push(5);
stack.add(4); stack.push(4);
/* 访问栈顶元素 */ /* 访问栈顶元素 */
int peek = stack.get(stack.size() - 1); int peek = stack.peek();
/* 元素出栈 */ /* 元素出栈 */
int pop = stack.remove(stack.size() - 1); int pop = stack.pop();
/* 获取栈的长度 */ /* 获取栈的长度 */
int size = stack.size(); int size = stack.size();
@ -70,7 +67,7 @@
int top = stack.top(); int top = stack.top();
/* 元素出栈 */ /* 元素出栈 */
stack.pop(); stack.pop(); // 无返回值
/* 获取栈的长度 */ /* 获取栈的长度 */
int size = stack.size(); int size = stack.size();