mirror of
https://github.com/krahets/hello-algo.git
synced 2024-12-25 13:46:30 +08:00
Update the chapter of stack and queue.
This commit is contained in:
parent
050b922f8a
commit
82bbdd444d
5 changed files with 27 additions and 35 deletions
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
/* 获取栈的长度 */
|
/* 获取栈的长度 */
|
||||||
|
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Reference in a new issue