refactor: Replace poll with pop in Queue and Deque (#415)

This commit is contained in:
Yudong Jin 2023-03-13 21:58:21 +08:00 committed by GitHub
parent 2d17ee8e92
commit 8aebbaad21
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
77 changed files with 261 additions and 261 deletions

View File

@ -67,8 +67,8 @@ void push(ArrayQueue *queue, int num) {
queue->queSize++; queue->queSize++;
} }
/* 出队 */ /* 出队 */
void poll(ArrayQueue *queue) { void pop(ArrayQueue *queue) {
int num = peek(queue); int num = peek(queue);
// 队首指针向后移动一位,若越过尾部则返回到数组头部 // 队首指针向后移动一位,若越过尾部则返回到数组头部
queue->front = (queue->front + 1) % queue->queCapacity; queue->front = (queue->front + 1) % queue->queCapacity;
@ -106,8 +106,8 @@ int main() {
printf("队首元素 peek = %d\r\n", peekNum); printf("队首元素 peek = %d\r\n", peekNum);
/* 元素出队 */ /* 元素出队 */
poll(queue); pop(queue);
printf("出队元素 poll = %d出队后 queue = ", peekNum); printf("出队元素 pop = %d出队后 queue = ", peekNum);
printArrayQueue(queue); printArrayQueue(queue);
/* 获取队列的长度 */ /* 获取队列的长度 */
@ -121,7 +121,7 @@ int main() {
/* 测试环形数组 */ /* 测试环形数组 */
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
push(queue, i); push(queue, i);
poll(queue); pop(queue);
printf("第 %d 轮入队 + 出队后 queue = ", i); printf("第 %d 轮入队 + 出队后 queue = ", i);
printArrayQueue(queue); printArrayQueue(queue);
} }

View File

@ -72,7 +72,7 @@ public:
} }
/* 队首出队 */ /* 队首出队 */
int pollFirst() { int popFirst() {
int num = peekFirst(); int num = peekFirst();
// 队首指针向后移动一位 // 队首指针向后移动一位
front = index(front + 1); front = index(front + 1);
@ -81,7 +81,7 @@ public:
} }
/* 队尾出队 */ /* 队尾出队 */
int pollLast() { int popLast() {
int num = peekLast(); int num = peekLast();
queSize--; queSize--;
return num; return num;
@ -139,11 +139,11 @@ int main() {
PrintUtil::printVector(deque->toVector()); PrintUtil::printVector(deque->toVector());
/* 元素出队 */ /* 元素出队 */
int pollLast = deque->pollLast(); int popLast = deque->popLast();
cout << "队尾出队元素 = " << pollLast << ",队尾出队后 deque = "; cout << "队尾出队元素 = " << popLast << ",队尾出队后 deque = ";
PrintUtil::printVector(deque->toVector()); PrintUtil::printVector(deque->toVector());
int pollFirst = deque->pollFirst(); int popFirst = deque->popFirst();
cout << "队首出队元素 = " << pollFirst << ",队首出队后 deque = "; cout << "队首出队元素 = " << popFirst << ",队首出队后 deque = ";
PrintUtil::printVector(deque->toVector()); PrintUtil::printVector(deque->toVector());
/* 获取双向队列的长度 */ /* 获取双向队列的长度 */

View File

@ -56,7 +56,7 @@ public:
} }
/* 出队 */ /* 出队 */
void poll() { void pop() {
int num = peek(); int num = peek();
// 队首指针向后移动一位,若越过尾部则返回到数组头部 // 队首指针向后移动一位,若越过尾部则返回到数组头部
front = (front + 1) % queCapacity; front = (front + 1) % queCapacity;
@ -102,8 +102,8 @@ int main() {
cout << "队首元素 peek = " << peek << endl; cout << "队首元素 peek = " << peek << endl;
/* 元素出队 */ /* 元素出队 */
queue->poll(); queue->pop();
cout << "出队元素 poll = " << peek << ",出队后 queue = "; cout << "出队元素 pop = " << peek << ",出队后 queue = ";
PrintUtil::printVector(queue->toVector()); PrintUtil::printVector(queue->toVector());
/* 获取队列的长度 */ /* 获取队列的长度 */
@ -117,7 +117,7 @@ int main() {
/* 测试环形数组 */ /* 测试环形数组 */
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
queue->push(i); queue->push(i);
queue->poll(); queue->pop();
cout << "" << i << " 轮入队 + 出队后 queue = "; cout << "" << i << " 轮入队 + 出队后 queue = ";
PrintUtil::printVector(queue->toVector()); PrintUtil::printVector(queue->toVector());
} }

View File

@ -79,7 +79,7 @@ public:
} }
/* 出队操作 */ /* 出队操作 */
int poll(bool isFront) { int pop(bool isFront) {
// 若队列为空,直接返回 -1 // 若队列为空,直接返回 -1
if (isEmpty()) if (isEmpty())
return -1; return -1;
@ -110,13 +110,13 @@ public:
} }
/* 队首出队 */ /* 队首出队 */
int pollFirst() { int popFirst() {
return poll(true); return pop(true);
} }
/* 队尾出队 */ /* 队尾出队 */
int pollLast() { int popLast() {
return poll(false); return pop(false);
} }
/* 访问队首元素 */ /* 访问队首元素 */
@ -166,11 +166,11 @@ int main() {
PrintUtil::printVector(deque->toVector()); PrintUtil::printVector(deque->toVector());
/* 元素出队 */ /* 元素出队 */
int pollLast = deque->pollLast(); int popLast = deque->popLast();
cout << "队尾出队元素 = " << pollLast << ",队尾出队后 deque = "; cout << "队尾出队元素 = " << popLast << ",队尾出队后 deque = ";
PrintUtil::printVector(deque->toVector()); PrintUtil::printVector(deque->toVector());
int pollFirst = deque->pollFirst(); int popFirst = deque->popFirst();
cout << "队首出队元素 = " << pollFirst << ",队首出队后 deque = "; cout << "队首出队元素 = " << popFirst << ",队首出队后 deque = ";
PrintUtil::printVector(deque->toVector()); PrintUtil::printVector(deque->toVector());
/* 获取双向队列的长度 */ /* 获取双向队列的长度 */

View File

@ -52,7 +52,7 @@ public:
} }
/* 出队 */ /* 出队 */
void poll() { void pop() {
int num = peek(); int num = peek();
// 删除头结点 // 删除头结点
ListNode *tmp = front; ListNode *tmp = front;
@ -101,8 +101,8 @@ int main() {
cout << "队首元素 peek = " << peek << endl; cout << "队首元素 peek = " << peek << endl;
/* 元素出队 */ /* 元素出队 */
queue->poll(); queue->pop();
cout << "出队元素 poll = " << peek << ",出队后 queue = "; cout << "出队元素 pop = " << peek << ",出队后 queue = ";
PrintUtil::printVector(queue->toVector()); PrintUtil::printVector(queue->toVector());
/* 获取队列的长度 */ /* 获取队列的长度 */

View File

@ -81,7 +81,7 @@ namespace hello_algo.chapter_stack_and_queue
} }
/* 队首出队 */ /* 队首出队 */
public int pollFirst() public int popFirst()
{ {
int num = peekFirst(); int num = peekFirst();
// 队首指针向后移动一位 // 队首指针向后移动一位
@ -91,7 +91,7 @@ namespace hello_algo.chapter_stack_and_queue
} }
/* 队尾出队 */ /* 队尾出队 */
public int pollLast() public int popLast()
{ {
int num = peekLast(); int num = peekLast();
queSize--; queSize--;
@ -158,10 +158,10 @@ namespace hello_algo.chapter_stack_and_queue
Console.WriteLine("元素 1 队首入队后 deque = " + string.Join(" ", deque.toArray())); Console.WriteLine("元素 1 队首入队后 deque = " + string.Join(" ", deque.toArray()));
/* 元素出队 */ /* 元素出队 */
int pollLast = deque.pollLast(); int popLast = deque.popLast();
Console.WriteLine("队尾出队元素 = " + pollLast + ",队尾出队后 deque = " + string.Join(" ", deque.toArray())); Console.WriteLine("队尾出队元素 = " + popLast + ",队尾出队后 deque = " + string.Join(" ", deque.toArray()));
int pollFirst = deque.pollFirst(); int popFirst = deque.popFirst();
Console.WriteLine("队首出队元素 = " + pollFirst + ",队首出队后 deque = " + string.Join(" ", deque.toArray())); Console.WriteLine("队首出队元素 = " + popFirst + ",队首出队后 deque = " + string.Join(" ", deque.toArray()));
/* 获取双向队列的长度 */ /* 获取双向队列的长度 */
int size = deque.size(); int size = deque.size();

View File

@ -56,7 +56,7 @@ class ArrayQueue
} }
/* 出队 */ /* 出队 */
public int poll() public int pop()
{ {
int num = peek(); int num = peek();
// 队首指针向后移动一位若越过尾部则返回到数组头部 // 队首指针向后移动一位若越过尾部则返回到数组头部
@ -108,8 +108,8 @@ public class array_queue
Console.WriteLine("队首元素 peek = " + peek); Console.WriteLine("队首元素 peek = " + peek);
/* 元素出队 */ /* 元素出队 */
int poll = queue.poll(); int pop = queue.pop();
Console.WriteLine("出队元素 poll = " + poll + ",出队后 queue = " + string.Join(",", queue.toArray())); Console.WriteLine("出队元素 pop = " + pop + ",出队后 queue = " + string.Join(",", queue.toArray()));
/* 获取队列的长度 */ /* 获取队列的长度 */
int size = queue.size(); int size = queue.size();
@ -123,7 +123,7 @@ public class array_queue
for (int i = 0; i < 10; i++) for (int i = 0; i < 10; i++)
{ {
queue.push(i); queue.push(i);
queue.poll(); queue.pop();
Console.WriteLine("" + i + " 轮入队 + 出队后 queue = " + string.Join(",", queue.toArray())); Console.WriteLine("" + i + " 轮入队 + 出队后 queue = " + string.Join(",", queue.toArray()));
} }
} }

View File

@ -90,7 +90,7 @@ namespace hello_algo.chapter_stack_and_queue
} }
/* 出队操作 */ /* 出队操作 */
private int? poll(bool isFront) private int? pop(bool isFront)
{ {
// 若队列为空直接返回 null // 若队列为空直接返回 null
if (isEmpty()) if (isEmpty())
@ -133,15 +133,15 @@ namespace hello_algo.chapter_stack_and_queue
} }
/* 队首出队 */ /* 队首出队 */
public int? pollFirst() public int? popFirst()
{ {
return poll(true); return pop(true);
} }
/* 队尾出队 */ /* 队尾出队 */
public int? pollLast() public int? popLast()
{ {
return poll(false); return pop(false);
} }
/* 访问队首元素 */ /* 访问队首元素 */
@ -196,10 +196,10 @@ namespace hello_algo.chapter_stack_and_queue
Console.WriteLine("元素 1 队首入队后 deque = " + string.Join(" ", deque.toArray())); Console.WriteLine("元素 1 队首入队后 deque = " + string.Join(" ", deque.toArray()));
/* 元素出队 */ /* 元素出队 */
int? pollLast = deque.pollLast(); int? popLast = deque.popLast();
Console.WriteLine("队尾出队元素 = " + pollLast + ",队尾出队后 deque = " + string.Join(" ", deque.toArray())); Console.WriteLine("队尾出队元素 = " + popLast + ",队尾出队后 deque = " + string.Join(" ", deque.toArray()));
int? pollFirst = deque.pollFirst(); int? popFirst = deque.popFirst();
Console.WriteLine("队首出队元素 = " + pollFirst + ",队首出队后 deque = " + string.Join(" ", deque.toArray())); Console.WriteLine("队首出队元素 = " + popFirst + ",队首出队后 deque = " + string.Join(" ", deque.toArray()));
/* 获取双向队列的长度 */ /* 获取双向队列的长度 */
int size = deque.size(); int size = deque.size();

View File

@ -54,7 +54,7 @@ class LinkedListQueue
} }
/* 出队 */ /* 出队 */
public int poll() public int pop()
{ {
int num = peek(); int num = peek();
// 删除头结点 // 删除头结点
@ -109,8 +109,8 @@ public class linkedlist_queue
Console.WriteLine("队首元素 peek = " + peek); Console.WriteLine("队首元素 peek = " + peek);
/* 元素出队 */ /* 元素出队 */
int poll = queue.poll(); int pop = queue.pop();
Console.WriteLine("出队元素 poll = " + poll + ",出队后 queue = " + String.Join(",", queue.toArray())); Console.WriteLine("出队元素 pop = " + pop + ",出队后 queue = " + String.Join(",", queue.toArray()));
/* 获取队列的长度 */ /* 获取队列的长度 */
int size = queue.size(); int size = queue.size();

View File

@ -29,8 +29,8 @@ public class queue
Console.WriteLine("队首元素 peek = " + peek); Console.WriteLine("队首元素 peek = " + peek);
/* 元素出队 */ /* 元素出队 */
int poll = queue.Dequeue(); int pop = queue.Dequeue();
Console.WriteLine("出队元素 poll = " + poll + ",出队后 queue = " + String.Join(",", queue.ToArray())); Console.WriteLine("出队元素 pop = " + pop + ",出队后 queue = " + String.Join(",", queue.ToArray()));
/* 获取队列的长度 */ /* 获取队列的长度 */
int size = queue.Count(); int size = queue.Count();

View File

@ -47,7 +47,7 @@ func (q *arrayQueue) push(num int) {
} }
/* 出队 */ /* 出队 */
func (q *arrayQueue) poll() any { func (q *arrayQueue) pop() any {
num := q.peek() num := q.peek()
// 队首指针向后移动一位,若越过尾部则返回到数组头部 // 队首指针向后移动一位,若越过尾部则返回到数组头部
q.front = (q.front + 1) % q.queCapacity q.front = (q.front + 1) % q.queCapacity

View File

@ -112,11 +112,11 @@ func TestLinkedListDeque(t *testing.T) {
fmt.Println("队尾元素 rear =", rear) fmt.Println("队尾元素 rear =", rear)
// 元素出队 // 元素出队
pollFirst := deque.pollFirst() popFirst := deque.popFirst()
fmt.Print("队首出队元素 pollFirst = ", pollFirst, ",队首出队后 deque = ") fmt.Print("队首出队元素 popFirst = ", popFirst, ",队首出队后 deque = ")
PrintList(deque.toList()) PrintList(deque.toList())
pollLast := deque.pollLast() popLast := deque.popLast()
fmt.Print("队尾出队元素 pollLast = ", pollLast, ",队尾出队后 deque = ") fmt.Print("队尾出队元素 popLast = ", popLast, ",队尾出队后 deque = ")
PrintList(deque.toList()) PrintList(deque.toList())
// 获取队的长度 // 获取队的长度
@ -136,6 +136,6 @@ func BenchmarkLinkedListDeque(b *testing.B) {
deque.pushLast(777) deque.pushLast(777)
} }
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
deque.pollFirst() deque.popFirst()
} }
} }

View File

@ -32,7 +32,7 @@ func (s *linkedListDeque) pushLast(value any) {
} }
/* 队首元素出队 */ /* 队首元素出队 */
func (s *linkedListDeque) pollFirst() any { func (s *linkedListDeque) popFirst() any {
if s.isEmpty() { if s.isEmpty() {
return nil return nil
} }
@ -42,7 +42,7 @@ func (s *linkedListDeque) pollFirst() any {
} }
/* 队尾元素出队 */ /* 队尾元素出队 */
func (s *linkedListDeque) pollLast() any { func (s *linkedListDeque) popLast() any {
if s.isEmpty() { if s.isEmpty() {
return nil return nil
} }

View File

@ -27,7 +27,7 @@ func (s *linkedListQueue) push(value any) {
} }
/* 出队 */ /* 出队 */
func (s *linkedListQueue) poll() any { func (s *linkedListQueue) pop() any {
if s.isEmpty() { if s.isEmpty() {
return nil return nil
} }

View File

@ -31,9 +31,9 @@ func TestQueue(t *testing.T) {
fmt.Println("队首元素 peek =", peek.Value) fmt.Println("队首元素 peek =", peek.Value)
/* 元素出队 */ /* 元素出队 */
poll := queue.Front() pop := queue.Front()
queue.Remove(poll) queue.Remove(pop)
fmt.Print("出队元素 poll = ", poll.Value, ",出队后 queue = ") fmt.Print("出队元素 pop = ", pop.Value, ",出队后 queue = ")
PrintList(queue) PrintList(queue)
/* 获取队列的长度 */ /* 获取队列的长度 */
@ -64,8 +64,8 @@ func TestArrayQueue(t *testing.T) {
fmt.Println("队首元素 peek =", peek) fmt.Println("队首元素 peek =", peek)
// 元素出队 // 元素出队
poll := queue.poll() pop := queue.pop()
fmt.Print("出队元素 poll = ", poll, ", 出队后 queue = ") fmt.Print("出队元素 pop = ", pop, ", 出队后 queue = ")
PrintSlice(queue.toSlice()) PrintSlice(queue.toSlice())
// 获取队的长度 // 获取队的长度
@ -79,7 +79,7 @@ func TestArrayQueue(t *testing.T) {
/* 测试环形数组 */ /* 测试环形数组 */
for i := 0; i < 10; i++ { for i := 0; i < 10; i++ {
queue.push(i) queue.push(i)
queue.poll() queue.pop()
fmt.Print("第", i, "轮入队 + 出队后 queue =") fmt.Print("第", i, "轮入队 + 出队后 queue =")
PrintSlice(queue.toSlice()) PrintSlice(queue.toSlice())
} }
@ -103,8 +103,8 @@ func TestLinkedListQueue(t *testing.T) {
fmt.Println("队首元素 peek =", peek) fmt.Println("队首元素 peek =", peek)
// 元素出队 // 元素出队
poll := queue.poll() pop := queue.pop()
fmt.Print("出队元素 poll = ", poll, ", 出队后 queue = ") fmt.Print("出队元素 pop = ", pop, ", 出队后 queue = ")
PrintList(queue.toList()) PrintList(queue.toList())
// 获取队的长度 // 获取队的长度
@ -125,7 +125,7 @@ func BenchmarkArrayQueue(b *testing.B) {
queue.push(777) queue.push(777)
} }
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
queue.poll() queue.pop()
} }
} }
@ -137,6 +137,6 @@ func BenchmarkLinkedQueue(b *testing.B) {
queue.push(777) queue.push(777)
} }
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {
queue.poll() queue.pop()
} }
} }

View File

@ -71,7 +71,7 @@ class ArrayDeque {
} }
/* 队首出队 */ /* 队首出队 */
public int pollFirst() { public int popFirst() {
int num = peekFirst(); int num = peekFirst();
// 队首指针向后移动一位 // 队首指针向后移动一位
front = index(front + 1); front = index(front + 1);
@ -80,7 +80,7 @@ class ArrayDeque {
} }
/* 队尾出队 */ /* 队尾出队 */
public int pollLast() { public int popLast() {
int num = peekLast(); int num = peekLast();
queSize--; queSize--;
return num; return num;
@ -135,10 +135,10 @@ public class array_deque {
System.out.println("元素 1 队首入队后 deque = " + Arrays.toString(deque.toArray())); System.out.println("元素 1 队首入队后 deque = " + Arrays.toString(deque.toArray()));
/* 元素出队 */ /* 元素出队 */
int pollLast = deque.pollLast(); int popLast = deque.popLast();
System.out.println("队尾出队元素 = " + pollLast + ",队尾出队后 deque = " + Arrays.toString(deque.toArray())); System.out.println("队尾出队元素 = " + popLast + ",队尾出队后 deque = " + Arrays.toString(deque.toArray()));
int pollFirst = deque.pollFirst(); int popFirst = deque.popFirst();
System.out.println("队首出队元素 = " + pollFirst + ",队首出队后 deque = " + Arrays.toString(deque.toArray())); System.out.println("队首出队元素 = " + popFirst + ",队首出队后 deque = " + Arrays.toString(deque.toArray()));
/* 获取双向队列的长度 */ /* 获取双向队列的长度 */
int size = deque.size(); int size = deque.size();

View File

@ -49,7 +49,7 @@ class ArrayQueue {
} }
/* 出队 */ /* 出队 */
public int poll() { public int pop() {
int num = peek(); int num = peek();
// 队首指针向后移动一位若越过尾部则返回到数组头部 // 队首指针向后移动一位若越过尾部则返回到数组头部
front = (front + 1) % capacity(); front = (front + 1) % capacity();
@ -94,8 +94,8 @@ public class array_queue {
System.out.println("队首元素 peek = " + peek); System.out.println("队首元素 peek = " + peek);
/* 元素出队 */ /* 元素出队 */
int poll = queue.poll(); int pop = queue.pop();
System.out.println("出队元素 poll = " + poll + ",出队后 queue = " + Arrays.toString(queue.toArray())); System.out.println("出队元素 pop = " + pop + ",出队后 queue = " + Arrays.toString(queue.toArray()));
/* 获取队列的长度 */ /* 获取队列的长度 */
int size = queue.size(); int size = queue.size();
@ -108,7 +108,7 @@ public class array_queue {
/* 测试环形数组 */ /* 测试环形数组 */
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
queue.push(i); queue.push(i);
queue.poll(); queue.pop();
System.out.println("" + i + " 轮入队 + 出队后 queue = " + Arrays.toString(queue.toArray())); System.out.println("" + i + " 轮入队 + 出队后 queue = " + Arrays.toString(queue.toArray()));
} }
} }

View File

@ -30,10 +30,10 @@ public class deque {
System.out.println("元素 1 队首入队后 deque = " + deque); System.out.println("元素 1 队首入队后 deque = " + deque);
/* 元素出队 */ /* 元素出队 */
int pollLast = deque.pollLast(); int popLast = deque.pollLast();
System.out.println("队尾出队元素 = " + pollLast + ",队尾出队后 deque = " + deque); System.out.println("队尾出队元素 = " + popLast + ",队尾出队后 deque = " + deque);
int pollFirst = deque.pollFirst(); int popFirst = deque.pollFirst();
System.out.println("队首出队元素 = " + pollFirst + ",队首出队后 deque = " + deque); System.out.println("队首出队元素 = " + popFirst + ",队首出队后 deque = " + deque);
/* 获取双向队列的长度 */ /* 获取双向队列的长度 */
int size = deque.size(); int size = deque.size();

View File

@ -71,7 +71,7 @@ class LinkedListDeque {
} }
/* 出队操作 */ /* 出队操作 */
private Integer poll(boolean isFront) { private Integer pop(boolean isFront) {
// 若队列为空直接返回 null // 若队列为空直接返回 null
if (isEmpty()) if (isEmpty())
return null; return null;
@ -102,13 +102,13 @@ class LinkedListDeque {
} }
/* 队首出队 */ /* 队首出队 */
public Integer pollFirst() { public Integer popFirst() {
return poll(true); return pop(true);
} }
/* 队尾出队 */ /* 队尾出队 */
public Integer pollLast() { public Integer popLast() {
return poll(false); return pop(false);
} }
/* 访问队首元素 */ /* 访问队首元素 */
@ -155,10 +155,10 @@ public class linkedlist_deque {
System.out.println("元素 1 队首入队后 deque = " + Arrays.toString(deque.toArray())); System.out.println("元素 1 队首入队后 deque = " + Arrays.toString(deque.toArray()));
/* 元素出队 */ /* 元素出队 */
int pollLast = deque.pollLast(); int popLast = deque.popLast();
System.out.println("队尾出队元素 = " + pollLast + ",队尾出队后 deque = " + Arrays.toString(deque.toArray())); System.out.println("队尾出队元素 = " + popLast + ",队尾出队后 deque = " + Arrays.toString(deque.toArray()));
int pollFirst = deque.pollFirst(); int popFirst = deque.popFirst();
System.out.println("队首出队元素 = " + pollFirst + ",队首出队后 deque = " + Arrays.toString(deque.toArray())); System.out.println("队首出队元素 = " + popFirst + ",队首出队后 deque = " + Arrays.toString(deque.toArray()));
/* 获取双向队列的长度 */ /* 获取双向队列的长度 */
int size = deque.size(); int size = deque.size();

View File

@ -45,7 +45,7 @@ class LinkedListQueue {
} }
/* 出队 */ /* 出队 */
public int poll() { public int pop() {
int num = peek(); int num = peek();
// 删除头结点 // 删除头结点
front = front.next; front = front.next;
@ -90,8 +90,8 @@ public class linkedlist_queue {
System.out.println("队首元素 peek = " + peek); System.out.println("队首元素 peek = " + peek);
/* 元素出队 */ /* 元素出队 */
int poll = queue.poll(); int pop = queue.pop();
System.out.println("出队元素 poll = " + poll + ",出队后 queue = " + Arrays.toString(queue.toArray())); System.out.println("出队元素 pop = " + pop + ",出队后 queue = " + Arrays.toString(queue.toArray()));
/* 获取队列的长度 */ /* 获取队列的长度 */
int size = queue.size(); int size = queue.size();

View File

@ -26,8 +26,8 @@ public class queue {
System.out.println("队首元素 peek = " + peek); System.out.println("队首元素 peek = " + peek);
/* 元素出队 */ /* 元素出队 */
int poll = queue.poll(); int pop = queue.poll();
System.out.println("出队元素 poll = " + poll + ",出队后 queue = " + queue); System.out.println("出队元素 pop = " + pop + ",出队后 queue = " + queue);
/* 获取队列的长度 */ /* 获取队列的长度 */
int size = queue.size(); int size = queue.size();

View File

@ -68,7 +68,7 @@ class ArrayDeque {
} }
/* 队首出队 */ /* 队首出队 */
pollFirst() { popFirst() {
const num = this.peekFirst(); const num = this.peekFirst();
// 队首指针向后移动一位 // 队首指针向后移动一位
this.#front = this.index(this.#front + 1); this.#front = this.index(this.#front + 1);
@ -77,7 +77,7 @@ class ArrayDeque {
} }
/* 队尾出队 */ /* 队尾出队 */
pollLast() { popLast() {
const num = this.peekLast(); const num = this.peekLast();
this.#queSize--; this.#queSize--;
return num; return num;
@ -132,10 +132,10 @@ deque.pushFirst(1);
console.log("元素 1 队首入队后 deque = [" + deque.toArray() + "]"); console.log("元素 1 队首入队后 deque = [" + deque.toArray() + "]");
/* 元素出队 */ /* 元素出队 */
const pollLast = deque.pollLast(); const popLast = deque.popLast();
console.log("队尾出队元素 = " + pollLast + ",队尾出队后 deque = [" + deque.toArray() + "]"); console.log("队尾出队元素 = " + popLast + ",队尾出队后 deque = [" + deque.toArray() + "]");
const pollFirst = deque.pollFirst(); const popFirst = deque.popFirst();
console.log("队首出队元素 = " + pollFirst + ",队首出队后 deque = [" + deque.toArray()+ "]"); console.log("队首出队元素 = " + popFirst + ",队首出队后 deque = [" + deque.toArray()+ "]");
/* 获取双向队列的长度 */ /* 获取双向队列的长度 */
const size = deque.size(); const size = deque.size();

View File

@ -44,7 +44,7 @@ class ArrayQueue {
} }
/* 出队 */ /* 出队 */
poll() { pop() {
const num = this.peek(); const num = this.peek();
// 队首指针向后移动一位,若越过尾部则返回到数组头部 // 队首指针向后移动一位,若越过尾部则返回到数组头部
this.#front = (this.#front + 1) % this.capacity; this.#front = (this.#front + 1) % this.capacity;
@ -89,8 +89,8 @@ const peek = queue.peek();
console.log("队首元素 peek = " + peek); console.log("队首元素 peek = " + peek);
/* 元素出队 */ /* 元素出队 */
const poll = queue.poll(); const pop = queue.pop();
console.log("出队元素 poll = " + poll + ",出队后 queue =", queue.toArray()); console.log("出队元素 pop = " + pop + ",出队后 queue =", queue.toArray());
/* 获取队列的长度 */ /* 获取队列的长度 */
const size = queue.size; const size = queue.size;
@ -103,6 +103,6 @@ console.log("队列是否为空 = " + empty);
/* 测试环形数组 */ /* 测试环形数组 */
for (let i = 0; i < 10; i++) { for (let i = 0; i < 10; i++) {
queue.push(i); queue.push(i);
queue.poll(); queue.pop();
console.log("第 " + i + " 轮入队 + 出队后 queue =", queue.toArray()); console.log("第 " + i + " 轮入队 + 出队后 queue =", queue.toArray());
} }

View File

@ -62,7 +62,7 @@ class LinkedListDeque {
} }
/* 队尾出队操作 */ /* 队尾出队操作 */
pollLast() { popLast() {
if (this.#queSize === 0) { if (this.#queSize === 0) {
return null; return null;
} }
@ -79,7 +79,7 @@ class LinkedListDeque {
} }
/* 队首出队操作 */ /* 队首出队操作 */
pollFirst() { popFirst() {
if (this.#queSize === 0) { if (this.#queSize === 0) {
return null; return null;
} }
@ -151,11 +151,11 @@ console.log("元素 1 队首入队后 linkedListDeque = ");
linkedListDeque.print(); linkedListDeque.print();
/* 元素出队 */ /* 元素出队 */
const pollLast = linkedListDeque.pollLast(); const popLast = linkedListDeque.popLast();
console.log("队尾出队元素 = " + pollLast + ",队尾出队后 linkedListDeque = "); console.log("队尾出队元素 = " + popLast + ",队尾出队后 linkedListDeque = ");
linkedListDeque.print(); linkedListDeque.print();
const pollFirst = linkedListDeque.pollFirst(); const popFirst = linkedListDeque.popFirst();
console.log("队首出队元素 = " + pollFirst + ",队首出队后 linkedListDeque = "); console.log("队首出队元素 = " + popFirst + ",队首出队后 linkedListDeque = ");
linkedListDeque.print(); linkedListDeque.print();
/* 获取双向队列的长度 */ /* 获取双向队列的长度 */

View File

@ -44,7 +44,7 @@ class LinkedListQueue {
} }
/* 出队 */ /* 出队 */
poll() { pop() {
const num = this.peek(); const num = this.peek();
// 删除头结点 // 删除头结点
this.#front = this.#front.next; this.#front = this.#front.next;
@ -90,8 +90,8 @@ const peek = queue.peek();
console.log("队首元素 peek = " + peek); console.log("队首元素 peek = " + peek);
/* 元素出队 */ /* 元素出队 */
const poll = queue.poll(); const pop = queue.pop();
console.log("出队元素 poll = " + poll + ",出队后 queue = " + queue.toArray()); console.log("出队元素 pop = " + pop + ",出队后 queue = " + queue.toArray());
/* 获取队列的长度 */ /* 获取队列的长度 */
const size = queue.size; const size = queue.size;

View File

@ -23,8 +23,8 @@ console.log("队首元素 peek =", peek);
/* 元素出队 */ /* 元素出队 */
// 底层是数组,因此 shift() 方法的时间复杂度为 O(n) // 底层是数组,因此 shift() 方法的时间复杂度为 O(n)
const poll = queue.shift(); const pop = queue.shift();
console.log("出队元素 poll =", poll, ",出队后 queue = ", queue); console.log("出队元素 pop =", pop, ",出队后 queue = ", queue);
/* 获取队列的长度 */ /* 获取队列的长度 */
const size = queue.length; const size = queue.length;

View File

@ -60,7 +60,7 @@ class ArrayDeque:
self.__nums[rear] = num self.__nums[rear] = num
self.__size += 1 self.__size += 1
def poll_first(self) -> int: def pop_first(self) -> int:
""" 队首出队 """ """ 队首出队 """
num = self.peek_first() num = self.peek_first()
# 队首指针向后移动一位 # 队首指针向后移动一位
@ -68,7 +68,7 @@ class ArrayDeque:
self.__size -= 1 self.__size -= 1
return num return num
def poll_last(self) -> int: def pop_last(self) -> int:
""" 队尾出队 """ """ 队尾出队 """
num = self.peek_last() num = self.peek_last()
self.__size -= 1 self.__size -= 1
@ -117,10 +117,10 @@ if __name__ == "__main__":
print("元素 1 队首入队后 deque =", deque.to_array()) print("元素 1 队首入队后 deque =", deque.to_array())
""" 元素出队 """ """ 元素出队 """
poll_last: int = deque.poll_last() pop_last: int = deque.pop_last()
print("队尾出队元素 =", poll_last, ",队尾出队后 deque =", deque.to_array()) print("队尾出队元素 =", pop_last, ",队尾出队后 deque =", deque.to_array())
poll_first: int = deque.poll_first() pop_first: int = deque.pop_first()
print("队首出队元素 =", poll_first, ",队首出队后 deque =", deque.to_array()) print("队首出队元素 =", pop_first, ",队首出队后 deque =", deque.to_array())
""" 获取双向队列的长度 """ """ 获取双向队列的长度 """
size: int = deque.size() size: int = deque.size()

View File

@ -38,7 +38,7 @@ class ArrayQueue:
self.__nums[rear] = num self.__nums[rear] = num
self.__size += 1 self.__size += 1
def poll(self) -> int: def pop(self) -> int:
""" 出队 """ """ 出队 """
num: int = self.peek() num: int = self.peek()
# 队首指针向后移动一位,若越过尾部则返回到数组头部 # 队首指针向后移动一位,若越过尾部则返回到数组头部
@ -79,8 +79,8 @@ if __name__ == "__main__":
print("队首元素 peek =", peek) print("队首元素 peek =", peek)
""" 元素出队 """ """ 元素出队 """
poll: int = queue.poll() pop: int = queue.pop()
print("出队元素 poll =", poll) print("出队元素 pop =", pop)
print("出队后 queue =", queue.to_list()) print("出队后 queue =", queue.to_list())
""" 获取队列的长度 """ """ 获取队列的长度 """
@ -94,5 +94,5 @@ if __name__ == "__main__":
""" 测试环形数组 """ """ 测试环形数组 """
for i in range(10): for i in range(10):
queue.push(i) queue.push(i)
queue.poll() queue.pop()
print("", i, "轮入队 + 出队后 queue = ", queue.to_list()) print("", i, "轮入队 + 出队后 queue = ", queue.to_list())

View File

@ -60,7 +60,7 @@ class LinkedListDeque:
""" 队尾入队 """ """ 队尾入队 """
self.push(num, False) self.push(num, False)
def poll(self, is_front: bool) -> int: def pop(self, is_front: bool) -> int:
""" 出队操作 """ """ 出队操作 """
# 若队列为空,直接返回 None # 若队列为空,直接返回 None
if self.is_empty(): if self.is_empty():
@ -86,13 +86,13 @@ class LinkedListDeque:
self.__size -= 1 # 更新队列长度 self.__size -= 1 # 更新队列长度
return val return val
def poll_first(self) -> int: def pop_first(self) -> int:
""" 队首出队 """ """ 队首出队 """
return self.poll(True) return self.pop(True)
def poll_last(self) -> int: def pop_last(self) -> int:
""" 队尾出队 """ """ 队尾出队 """
return self.poll(False) return self.pop(False)
def peek_first(self) -> int: def peek_first(self) -> int:
""" 访问队首元素 """ """ 访问队首元素 """
@ -134,10 +134,10 @@ if __name__ == "__main__":
print("元素 1 队首入队后 deque =", deque.to_array()) print("元素 1 队首入队后 deque =", deque.to_array())
""" 元素出队 """ """ 元素出队 """
poll_last: int = deque.poll_last() pop_last: int = deque.pop_last()
print("队尾出队元素 =", poll_last, ",队尾出队后 deque =", deque.to_array()) print("队尾出队元素 =", pop_last, ",队尾出队后 deque =", deque.to_array())
poll_first: int = deque.poll_first() pop_first: int = deque.pop_first()
print("队首出队元素 =", poll_first, ",队首出队后 deque =", deque.to_array()) print("队首出队元素 =", pop_first, ",队首出队后 deque =", deque.to_array())
""" 获取双向队列的长度 """ """ 获取双向队列的长度 """
size: int = deque.size() size: int = deque.size()

View File

@ -38,7 +38,7 @@ class LinkedListQueue:
self.__rear = node self.__rear = node
self.__size += 1 self.__size += 1
def poll(self) -> int: def pop(self) -> int:
""" 出队 """ """ 出队 """
num = self.peek() num = self.peek()
# 删除头结点 # 删除头结点
@ -81,8 +81,8 @@ if __name__ == "__main__":
print("队首元素 front =", peek) print("队首元素 front =", peek)
""" 元素出队 """ """ 元素出队 """
pop_front: int = queue.poll() pop_front: int = queue.pop()
print("出队元素 poll =", pop_front) print("出队元素 pop =", pop_front)
print("出队后 queue =", queue.to_list()) print("出队后 queue =", queue.to_list())
""" 获取队列的长度 """ """ 获取队列的长度 """

View File

@ -36,7 +36,7 @@ impl ArrayQueue {
self.que_size += 1; self.que_size += 1;
} }
fn poll(&mut self) -> i32 { fn pop(&mut self) -> i32 {
let num = self.peek(); let num = self.peek();
self.front = (self.front + 1) % self.que_capacity; self.front = (self.front + 1) % self.que_capacity;
self.que_size -= 1; self.que_size -= 1;
@ -77,10 +77,10 @@ fn main() {
let peek = queue.peek(); let peek = queue.peek();
println!("队首元素 peek = {}", peek); println!("队首元素 peek = {}", peek);
let poll = queue.poll(); let pop = queue.pop();
println!( println!(
"出队元素 poll = {:?},出队后 queue = {:?}", "出队元素 pop = {:?},出队后 queue = {:?}",
poll, pop,
queue.to_vector() queue.to_vector()
); );
@ -92,7 +92,7 @@ fn main() {
for i in 0..10 { for i in 0..10 {
queue.push(i); queue.push(i);
queue.poll(); queue.pop();
println!("{:?} 轮入队 + 出队后 queue = {:?}", i, queue.to_vector()); println!("{:?} 轮入队 + 出队后 queue = {:?}", i, queue.to_vector());
} }
} }

View File

@ -27,11 +27,11 @@ pub fn main() {
print!("\n队尾元素 peekLast = {peek_last}"); print!("\n队尾元素 peekLast = {peek_last}");
// 元素出队 // 元素出队
let poll_first = deque.pop_front().unwrap(); // 队首元素出队 let pop_first = deque.pop_front().unwrap(); // 队首元素出队
print!("\n队首出队元素 pollFirst = {poll_first},队首出队后 deque = "); print!("\n队首出队元素 popFirst = {pop_first},队首出队后 deque = ");
print_util::print_queue(&deque); print_util::print_queue(&deque);
let poll_last = deque.pop_back().unwrap(); // 队尾元素出队 let pop_last = deque.pop_back().unwrap(); // 队尾元素出队
print!("\n队尾出队元素 pollLast = {poll_last},队尾出队后 deque = "); print!("\n队尾出队元素 popLast = {pop_last},队尾出队后 deque = ");
print_util::print_queue(&deque); print_util::print_queue(&deque);
// 获取双向队列的长度 // 获取双向队列的长度

View File

@ -27,8 +27,8 @@ pub fn main() {
println!("\n队首元素 peek = {peek}"); println!("\n队首元素 peek = {peek}");
// 元素出队 // 元素出队
let poll = queue.pop_front().unwrap(); let pop = queue.pop_front().unwrap();
print!("出队元素 poll = {poll},出队后 queue = "); print!("出队元素 pop = {pop},出队后 queue = ");
print_util::print_queue(&queue); print_util::print_queue(&queue);
// 获取队列的长度 // 获取队列的长度

View File

@ -68,7 +68,7 @@ class ArrayDeque {
} }
/* */ /* */
func pollFirst() -> Int { func popFirst() -> Int {
let num = peekFirst() let num = peekFirst()
// //
front = index(i: front + 1) front = index(i: front + 1)
@ -77,7 +77,7 @@ class ArrayDeque {
} }
/* */ /* */
func pollLast() -> Int { func popLast() -> Int {
let num = peekLast() let num = peekLast()
queSize -= 1 queSize -= 1
return num return num
@ -136,10 +136,10 @@ enum _ArrayDeque {
print("元素 1 队首入队后 deque = \(deque.toArray())") print("元素 1 队首入队后 deque = \(deque.toArray())")
/* */ /* */
let pollLast = deque.pollLast() let popLast = deque.popLast()
print("队尾出队元素 = \(pollLast),队尾出队后 deque = \(deque.toArray())") print("队尾出队元素 = \(popLast),队尾出队后 deque = \(deque.toArray())")
let pollFirst = deque.pollFirst() let popFirst = deque.popFirst()
print("队首出队元素 = \(pollFirst),队首出队后 deque = \(deque.toArray())") print("队首出队元素 = \(popFirst),队首出队后 deque = \(deque.toArray())")
/* */ /* */
let size = deque.size() let size = deque.size()

View File

@ -46,7 +46,7 @@ class ArrayQueue {
/* */ /* */
@discardableResult @discardableResult
func poll() -> Int { func pop() -> Int {
let num = peek() let num = peek()
// //
front = (front + 1) % capacity() front = (front + 1) % capacity()
@ -94,8 +94,8 @@ enum _ArrayQueue {
print("队首元素 peek = \(peek)") print("队首元素 peek = \(peek)")
/* */ /* */
let poll = queue.poll() let pop = queue.pop()
print("出队元素 poll = \(poll),出队后 queue = \(queue.toArray())") print("出队元素 pop = \(pop),出队后 queue = \(queue.toArray())")
/* */ /* */
let size = queue.size() let size = queue.size()
@ -108,7 +108,7 @@ enum _ArrayQueue {
/* */ /* */
for i in 0 ..< 10 { for i in 0 ..< 10 {
queue.push(num: i) queue.push(num: i)
queue.poll() queue.pop()
print("\(i) 轮入队 + 出队后 queue = \(queue.toArray())") print("\(i) 轮入队 + 出队后 queue = \(queue.toArray())")
} }
} }

View File

@ -27,11 +27,11 @@ enum Deque {
print("队尾元素 peekLast = \(peekLast)") print("队尾元素 peekLast = \(peekLast)")
/* */ /* */
// 使 Array pollFirst O(n) // 使 Array popFirst O(n)
let pollFirst = deque.removeFirst() let popFirst = deque.removeFirst()
print("队首出队元素 pollFirst = \(pollFirst),队首出队后 deque = \(deque)") print("队首出队元素 popFirst = \(popFirst),队首出队后 deque = \(deque)")
let pollLast = deque.removeLast() let popLast = deque.removeLast()
print("队尾出队元素 pollLast = \(pollLast),队尾出队后 deque = \(deque)") print("队尾出队元素 popLast = \(popLast),队尾出队后 deque = \(deque)")
/* */ /* */
let size = deque.count let size = deque.count

View File

@ -71,7 +71,7 @@ class LinkedListDeque {
} }
/* */ /* */
private func poll(isFront: Bool) -> Int { private func pop(isFront: Bool) -> Int {
if isEmpty() { if isEmpty() {
fatalError("双向队列为空") fatalError("双向队列为空")
} }
@ -103,13 +103,13 @@ class LinkedListDeque {
} }
/* */ /* */
func pollFirst() -> Int { func popFirst() -> Int {
poll(isFront: true) pop(isFront: true)
} }
/* */ /* */
func pollLast() -> Int { func popLast() -> Int {
poll(isFront: false) pop(isFront: false)
} }
/* 访 */ /* 访 */
@ -158,10 +158,10 @@ enum _LinkedListDeque {
print("元素 1 队首入队后 deque = \(deque.toArray())") print("元素 1 队首入队后 deque = \(deque.toArray())")
/* */ /* */
let pollLast = deque.pollLast() let popLast = deque.popLast()
print("队尾出队元素 = \(pollLast),队尾出队后 deque = \(deque.toArray())") print("队尾出队元素 = \(popLast),队尾出队后 deque = \(deque.toArray())")
let pollFirst = deque.pollFirst() let popFirst = deque.popFirst()
print("队首出队元素 = \(pollFirst),队首出队后 deque = \(deque.toArray())") print("队首出队元素 = \(popFirst),队首出队后 deque = \(deque.toArray())")
/* */ /* */
let size = deque.size() let size = deque.size()

View File

@ -43,7 +43,7 @@ class LinkedListQueue {
/* */ /* */
@discardableResult @discardableResult
func poll() -> Int { func pop() -> Int {
let num = peek() let num = peek()
// //
front = front?.next front = front?.next
@ -91,8 +91,8 @@ enum _LinkedListQueue {
print("队首元素 peek = \(peek)") print("队首元素 peek = \(peek)")
/* */ /* */
let poll = queue.poll() let pop = queue.pop()
print("出队元素 poll = \(poll),出队后 queue = \(queue.toArray())") print("出队元素 pop = \(pop),出队后 queue = \(queue.toArray())")
/* */ /* */
let size = queue.size() let size = queue.size()

View File

@ -25,9 +25,9 @@ enum Queue {
print("队首元素 peek = \(peek)") print("队首元素 peek = \(peek)")
/* */ /* */
// 使 Array poll O(n) // 使 Array pop O(n)
let pool = queue.removeFirst() let pool = queue.removeFirst()
print("出队元素 poll = \(pool),出队后 queue = \(queue)") print("出队元素 pop = \(pool),出队后 queue = \(queue)")
/* */ /* */
let size = queue.count let size = queue.count

View File

@ -69,7 +69,7 @@ class ArrayDeque {
} }
/* 队首出队 */ /* 队首出队 */
pollFirst(): number { popFirst(): number {
const num: number = this.peekFirst(); const num: number = this.peekFirst();
// 队首指针向后移动一位 // 队首指针向后移动一位
this.front = this.index(this.front + 1); this.front = this.index(this.front + 1);
@ -78,7 +78,7 @@ class ArrayDeque {
} }
/* 队尾出队 */ /* 队尾出队 */
pollLast(): number { popLast(): number {
const num: number = this.peekLast(); const num: number = this.peekLast();
this.queSize--; this.queSize--;
return num; return num;
@ -133,10 +133,10 @@ deque.pushFirst(1);
console.log("元素 1 队首入队后 deque = [" + deque.toArray() + "]"); console.log("元素 1 队首入队后 deque = [" + deque.toArray() + "]");
/* 元素出队 */ /* 元素出队 */
const pollLast = deque.pollLast(); const popLast = deque.popLast();
console.log("队尾出队元素 = " + pollLast + ",队尾出队后 deque = [" + deque.toArray() + "]"); console.log("队尾出队元素 = " + popLast + ",队尾出队后 deque = [" + deque.toArray() + "]");
const pollFirst = deque.pollFirst(); const popFirst = deque.popFirst();
console.log("队首出队元素 = " + pollFirst + ",队首出队后 deque = [" + deque.toArray()+ "]"); console.log("队首出队元素 = " + popFirst + ",队首出队后 deque = [" + deque.toArray()+ "]");
/* 获取双向队列的长度 */ /* 获取双向队列的长度 */
const size = deque.size(); const size = deque.size();

View File

@ -45,7 +45,7 @@ class ArrayQueue {
} }
/* 出队 */ /* 出队 */
poll(): number { pop(): number {
const num = this.peek(); const num = this.peek();
// 队首指针向后移动一位,若越过尾部则返回到数组头部 // 队首指针向后移动一位,若越过尾部则返回到数组头部
this.front = (this.front + 1) % this.capacity; this.front = (this.front + 1) % this.capacity;
@ -89,8 +89,8 @@ const peek = queue.peek();
console.log("队首元素 peek = " + peek); console.log("队首元素 peek = " + peek);
/* 元素出队 */ /* 元素出队 */
const poll = queue.poll(); const pop = queue.pop();
console.log("出队元素 poll = " + poll + ",出队后 queue =", queue.toArray()); console.log("出队元素 pop = " + pop + ",出队后 queue =", queue.toArray());
/* 获取队列的长度 */ /* 获取队列的长度 */
const size = queue.size; const size = queue.size;
@ -103,7 +103,7 @@ console.log("队列是否为空 = " + empty);
/* 测试环形数组 */ /* 测试环形数组 */
for (let i = 0; i < 10; i++) { for (let i = 0; i < 10; i++) {
queue.push(i); queue.push(i);
queue.poll(); queue.pop();
console.log("第 " + i + " 轮入队 + 出队后 queue =", queue.toArray()); console.log("第 " + i + " 轮入队 + 出队后 queue =", queue.toArray());
} }

View File

@ -62,7 +62,7 @@ class LinkedListDeque {
} }
/* 队尾出队操作 */ /* 队尾出队操作 */
pollLast(): number { popLast(): number {
if (this.queSize === 0) { if (this.queSize === 0) {
return null; return null;
} }
@ -79,7 +79,7 @@ class LinkedListDeque {
} }
/* 队首出队操作 */ /* 队首出队操作 */
pollFirst(): number { popFirst(): number {
if (this.queSize === 0) { if (this.queSize === 0) {
return null; return null;
} }
@ -151,11 +151,11 @@ console.log("元素 1 队首入队后 linkedListDeque = ");
linkedListDeque.print(); linkedListDeque.print();
/* 元素出队 */ /* 元素出队 */
const pollLast: number = linkedListDeque.pollLast(); const popLast: number = linkedListDeque.popLast();
console.log("队尾出队元素 = " + pollLast + ",队尾出队后 linkedListDeque = "); console.log("队尾出队元素 = " + popLast + ",队尾出队后 linkedListDeque = ");
linkedListDeque.print(); linkedListDeque.print();
const pollFirst: number = linkedListDeque.pollFirst(); const popFirst: number = linkedListDeque.popFirst();
console.log("队首出队元素 = " + pollFirst + ",队首出队后 linkedListDeque = "); console.log("队首出队元素 = " + popFirst + ",队首出队后 linkedListDeque = ");
linkedListDeque.print(); linkedListDeque.print();
/* 获取双向队列的长度 */ /* 获取双向队列的长度 */

View File

@ -44,7 +44,7 @@ class LinkedListQueue {
} }
/* 出队 */ /* 出队 */
poll(): number { pop(): number {
const num = this.peek(); const num = this.peek();
if (!this.front) throw new Error('队列为空'); if (!this.front) throw new Error('队列为空');
// 删除头结点 // 删除头结点
@ -88,8 +88,8 @@ const peek = queue.peek();
console.log('队首元素 peek = ' + peek); console.log('队首元素 peek = ' + peek);
/* 元素出队 */ /* 元素出队 */
const poll = queue.poll(); const pop = queue.pop();
console.log('出队元素 poll = ' + poll + ',出队后 queue = ' + queue.toArray()); console.log('出队元素 pop = ' + pop + ',出队后 queue = ' + queue.toArray());
/* 获取队列的长度 */ /* 获取队列的长度 */
const size = queue.size; const size = queue.size;

View File

@ -23,8 +23,8 @@ console.log("队首元素 peek =", peek);
/* 元素出队 */ /* 元素出队 */
// 底层是数组,因此 shift() 方法的时间复杂度为 O(n) // 底层是数组,因此 shift() 方法的时间复杂度为 O(n)
const poll = queue.shift(); const pop = queue.shift();
console.log("出队元素 poll =", poll, ",出队后 queue = ", queue); console.log("出队元素 pop =", pop, ",出队后 queue = ", queue);
/* 获取队列的长度 */ /* 获取队列的长度 */
const size = queue.length; const size = queue.length;

View File

@ -64,7 +64,7 @@ pub fn ArrayQueue(comptime T: type) type {
} }
// //
pub fn poll(self: *Self) T { pub fn pop(self: *Self) T {
var num = self.peek(); var num = self.peek();
// //
self.front = (self.front + 1) % self.capacity(); self.front = (self.front + 1) % self.capacity();
@ -115,8 +115,8 @@ pub fn main() !void {
std.debug.print("\n队首元素 peek = {}", .{peek}); std.debug.print("\n队首元素 peek = {}", .{peek});
// //
var poll = queue.poll(); var pop = queue.pop();
std.debug.print("\n出队元素 poll = {},出队后 queue = ", .{poll}); std.debug.print("\n出队元素 pop = {},出队后 queue = ", .{pop});
inc.PrintUtil.printArray(i32, try queue.toArray()); inc.PrintUtil.printArray(i32, try queue.toArray());
// //
@ -131,7 +131,7 @@ pub fn main() !void {
var i: i32 = 0; var i: i32 = 0;
while (i < 10) : (i += 1) { while (i < 10) : (i += 1) {
try queue.push(i); try queue.push(i);
_ = queue.poll(); _ = queue.pop();
std.debug.print("\n第 {} 轮入队 + 出队后 queue = ", .{i}); std.debug.print("\n第 {} 轮入队 + 出队后 queue = ", .{i});
inc.PrintUtil.printArray(i32, try queue.toArray()); inc.PrintUtil.printArray(i32, try queue.toArray());
} }

View File

@ -32,11 +32,11 @@ pub fn main() !void {
std.debug.print("\n队尾元素 peekLast = {}", .{peekLast}); std.debug.print("\n队尾元素 peekLast = {}", .{peekLast});
// //
var pollFirst = deque.popFirst().?.data; // var popFirst = deque.popFirst().?.data; //
std.debug.print("\n队首出队元素 pollFirst = {},队首出队后 deque = ", .{pollFirst}); std.debug.print("\n队首出队元素 popFirst = {},队首出队后 deque = ", .{popFirst});
inc.PrintUtil.printQueue(i32, deque); inc.PrintUtil.printQueue(i32, deque);
var pollLast = deque.pop().?.data; // var popLast = deque.pop().?.data; //
std.debug.print("\n队尾出队元素 pollLast = {},队尾出队后 deque = ", .{pollLast}); std.debug.print("\n队尾出队元素 popLast = {},队尾出队后 deque = ", .{popLast});
inc.PrintUtil.printQueue(i32, deque); inc.PrintUtil.printQueue(i32, deque);
// //

View File

@ -96,7 +96,7 @@ pub fn LinkedListDeque(comptime T: type) type {
} }
// //
pub fn poll(self: *Self, is_front: bool) T { pub fn pop(self: *Self, is_front: bool) T {
if (self.isEmpty()) @panic("双向队列为空"); if (self.isEmpty()) @panic("双向队列为空");
var val: T = undefined; var val: T = undefined;
// //
@ -125,13 +125,13 @@ pub fn LinkedListDeque(comptime T: type) type {
} }
// //
pub fn pollFirst(self: *Self) T { pub fn popFirst(self: *Self) T {
return self.poll(true); return self.pop(true);
} }
// //
pub fn pollLast(self: *Self) T { pub fn popLast(self: *Self) T {
return self.poll(false); return self.pop(false);
} }
// 访 // 访
@ -188,11 +188,11 @@ pub fn main() !void {
inc.PrintUtil.printArray(i32, try deque.toArray()); inc.PrintUtil.printArray(i32, try deque.toArray());
// //
var poll_last = deque.pollLast(); var pop_last = deque.popLast();
std.debug.print("\n队尾出队元素 = {},队尾出队后 deque = ", .{poll_last}); std.debug.print("\n队尾出队元素 = {},队尾出队后 deque = ", .{pop_last});
inc.PrintUtil.printArray(i32, try deque.toArray()); inc.PrintUtil.printArray(i32, try deque.toArray());
var poll_first = deque.pollFirst(); var pop_first = deque.popFirst();
std.debug.print("\n队首出队元素 = {},队首出队后 deque = ", .{poll_first}); std.debug.print("\n队首出队元素 = {},队首出队后 deque = ", .{pop_first});
inc.PrintUtil.printArray(i32, try deque.toArray()); inc.PrintUtil.printArray(i32, try deque.toArray());
// //

View File

@ -67,7 +67,7 @@ pub fn LinkedListQueue(comptime T: type) type {
} }
// //
pub fn poll(self: *Self) T { pub fn pop(self: *Self) T {
var num = self.peek(); var num = self.peek();
// //
self.front = self.front.?.next; self.front = self.front.?.next;
@ -111,8 +111,8 @@ pub fn main() !void {
std.debug.print("\n队首元素 peek = {}", .{peek}); std.debug.print("\n队首元素 peek = {}", .{peek});
// //
var poll = queue.poll(); var pop = queue.pop();
std.debug.print("\n出队元素 poll = {},出队后 queue = ", .{poll}); std.debug.print("\n出队元素 pop = {},出队后 queue = ", .{pop});
inc.PrintUtil.printArray(i32, try queue.toArray()); inc.PrintUtil.printArray(i32, try queue.toArray());
// //

View File

@ -30,8 +30,8 @@ pub fn main() !void {
std.debug.print("\n队首元素 peek = {}", .{peek}); std.debug.print("\n队首元素 peek = {}", .{peek});
// //
var poll = queue.popFirst().?.data; var pop = queue.popFirst().?.data;
std.debug.print("\n出队元素 poll = {},出队后 queue = ", .{poll}); std.debug.print("\n出队元素 pop = {},出队后 queue = ", .{pop});
inc.PrintUtil.printQueue(i32, queue); inc.PrintUtil.printQueue(i32, queue);
// //

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 63 KiB

View File

@ -6,18 +6,18 @@
## 双向队列常用操作 ## 双向队列常用操作
双向队列的常用操作见下表,方法名需根据语言来确定,此处以 Java 为例 双向队列的常用操作见下表,方法名需根据语言来确定。
<div class="center-table" markdown> <div class="center-table" markdown>
| 方法名 | 描述 | 时间复杂度 | | 方法名 | 描述 | 时间复杂度 |
| ------------ | ---------------- | ---------- | | ----------- | -------------- | ---------- |
| pushFirst() | 将元素添加至队首 | $O(1)$ | | pushFirst() | 将元素添加至队首 | $O(1)$ |
| pushLast() | 将元素添加至队尾 | $O(1)$ | | pushLast() | 将元素添加至队尾 | $O(1)$ |
| pollFirst() | 删除队首元素 | $O(1)$ | | popFirst() | 删除队首元素 | $O(1)$ |
| pollLast() | 删除队尾元素 | $O(1)$ | | popLast() | 删除队尾元素 | $O(1)$ |
| peekFirst() | 访问队首元素 | $O(1)$ | | peekFirst() | 访问队首元素 | $O(1)$ |
| peekLast() | 访问队尾元素 | $O(1)$ | | peekLast() | 访问队尾元素 | $O(1)$ |
</div> </div>
@ -41,8 +41,8 @@
int peekLast = deque.peekLast(); // 队尾元素 int peekLast = deque.peekLast(); // 队尾元素
/* 元素出队 */ /* 元素出队 */
int pollFirst = deque.pollFirst(); // 队首元素出队 int popFirst = deque.pollFirst(); // 队首元素出队
int pollLast = deque.pollLast(); // 队尾元素出队 int popLast = deque.pollLast(); // 队尾元素出队
/* 获取双向队列的长度 */ /* 获取双向队列的长度 */
int size = deque.size(); int size = deque.size();
@ -266,9 +266,9 @@
let peekLast = deque.last! // 队尾元素 let peekLast = deque.last! // 队尾元素
/* 元素出队 */ /* 元素出队 */
// 使用 Array 模拟时 pollFirst 的复杂度为 O(n) // 使用 Array 模拟时 popFirst 的复杂度为 O(n)
let pollFirst = deque.removeFirst() // 队首元素出队 let popFirst = deque.removeFirst() // 队首元素出队
let pollLast = deque.removeLast() // 队尾元素出队 let popLast = deque.removeLast() // 队尾元素出队
/* 获取双向队列的长度 */ /* 获取双向队列的长度 */
let size = deque.count let size = deque.count
@ -304,11 +304,11 @@
=== "pushFirst()" === "pushFirst()"
![linkedlist_deque_push_first](deque.assets/linkedlist_deque_push_first.png) ![linkedlist_deque_push_first](deque.assets/linkedlist_deque_push_first.png)
=== "pollLast()" === "popLast()"
![linkedlist_deque_poll_last](deque.assets/linkedlist_deque_poll_last.png) ![linkedlist_deque_pop_last](deque.assets/linkedlist_deque_pop_last.png)
=== "pollFirst()" === "popFirst()"
![linkedlist_deque_poll_first](deque.assets/linkedlist_deque_poll_first.png) ![linkedlist_deque_pop_first](deque.assets/linkedlist_deque_pop_first.png)
以下是具体实现代码。 以下是具体实现代码。
@ -403,11 +403,11 @@
=== "pushFirst()" === "pushFirst()"
![array_deque_push_first](deque.assets/array_deque_push_first.png) ![array_deque_push_first](deque.assets/array_deque_push_first.png)
=== "pollLast()" === "popLast()"
![array_deque_poll_last](deque.assets/array_deque_poll_last.png) ![array_deque_pop_last](deque.assets/array_deque_pop_last.png)
=== "pollFirst()" === "popFirst()"
![array_deque_poll_first](deque.assets/array_deque_poll_first.png) ![array_deque_pop_first](deque.assets/array_deque_pop_first.png)
以下是具体实现代码。 以下是具体实现代码。

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

View File

@ -8,15 +8,15 @@
## 队列常用操作 ## 队列常用操作
队列的常用操作见下表,方法名需根据语言来确定,此处以 Java 为例 队列的常用操作见下表。需要注意,不同编程语言的方法名是不同的,在这里我们采用与栈相同的方法命名
<div class="center-table" markdown> <div class="center-table" markdown>
| 方法名 | 描述 | 时间复杂度 | | 方法名 | 描述 | 时间复杂度 |
| --------- | -------------------------- | -------- | | --------- | -------------------------- | -------- |
| push() | 元素入队,即将元素添加至队尾 | $O(1)$ | | push() | 元素入队,即将元素添加至队尾 | $O(1)$ |
| poll() | 队首元素出队 | $O(1)$ | | pop() | 队首元素出队 | $O(1)$ |
| peek() | 访问队首元素 | $O(1)$ | | peek() | 访问队首元素 | $O(1)$ |
</div> </div>
@ -39,7 +39,7 @@
int peek = queue.peek(); int peek = queue.peek();
/* 元素出队 */ /* 元素出队 */
int poll = queue.poll(); int pop = queue.poll();
/* 获取队列的长度 */ /* 获取队列的长度 */
int size = queue.size(); int size = queue.size();
@ -120,8 +120,8 @@
peek := queue.Front() peek := queue.Front()
/* 元素出队 */ /* 元素出队 */
poll := queue.Front() pop := queue.Front()
queue.Remove(poll) queue.Remove(pop)
/* 获取队列的长度 */ /* 获取队列的长度 */
size := queue.Len() size := queue.Len()
@ -149,7 +149,7 @@
/* 元素出队 */ /* 元素出队 */
// 底层是数组,因此 shift() 方法的时间复杂度为 O(n) // 底层是数组,因此 shift() 方法的时间复杂度为 O(n)
const poll = queue.shift(); const pop = queue.shift();
/* 获取队列的长度 */ /* 获取队列的长度 */
const size = queue.length; const size = queue.length;
@ -177,7 +177,7 @@
/* 元素出队 */ /* 元素出队 */
// 底层是数组,因此 shift() 方法的时间复杂度为 O(n) // 底层是数组,因此 shift() 方法的时间复杂度为 O(n)
const poll = queue.shift(); const pop = queue.shift();
/* 获取队列的长度 */ /* 获取队列的长度 */
const size = queue.length; const size = queue.length;
@ -209,7 +209,7 @@
int peek = queue.Peek(); int peek = queue.Peek();
/* 元素出队 */ /* 元素出队 */
int poll = queue.Dequeue(); int pop = queue.Dequeue();
/* 获取队列的长度 */ /* 获取队列的长度 */
int size = queue.Count(); int size = queue.Count();
@ -236,7 +236,7 @@
let peek = queue.first! let peek = queue.first!
/* 元素出队 */ /* 元素出队 */
// 使用 Array 模拟时 poll 的复杂度为 O(n) // 由于是数组,因此 removeFirst 的复杂度为 O(n)
let pool = queue.removeFirst() let pool = queue.removeFirst()
/* 获取队列的长度 */ /* 获取队列的长度 */
@ -266,8 +266,8 @@
=== "push()" === "push()"
![linkedlist_queue_push](queue.assets/linkedlist_queue_push.png) ![linkedlist_queue_push](queue.assets/linkedlist_queue_push.png)
=== "poll()" === "pop()"
![linkedlist_queue_poll](queue.assets/linkedlist_queue_poll.png) ![linkedlist_queue_pop](queue.assets/linkedlist_queue_pop.png)
以下是使用链表实现队列的示例代码。 以下是使用链表实现队列的示例代码。
@ -350,8 +350,8 @@
=== "push()" === "push()"
![array_queue_push](queue.assets/array_queue_push.png) ![array_queue_push](queue.assets/array_queue_push.png)
=== "poll()" === "pop()"
![array_queue_poll](queue.assets/array_queue_poll.png) ![array_queue_pop](queue.assets/array_queue_pop.png)
细心的同学可能会发现一个问题:在不断入队与出队的过程中,`front``rear` 都在向右移动,**在到达数组尾部后就无法继续移动了**。为解决此问题,**我们考虑将数组看作是首尾相接的**,这样的数组被称为「环形数组」。 细心的同学可能会发现一个问题:在不断入队与出队的过程中,`front``rear` 都在向右移动,**在到达数组尾部后就无法继续移动了**。为解决此问题,**我们考虑将数组看作是首尾相接的**,这样的数组被称为「环形数组」。

View File

@ -10,7 +10,7 @@
## 栈常用操作 ## 栈常用操作
栈的常用操作见下表,方法名需根据语言来确定,此处以 Java 为例。 栈的常用操作见下表,方法名需根据编程语言来确定,此处我们以常见的 `push` , `pop` , `peek` 为例。
<div class="center-table" markdown> <div class="center-table" markdown>