refactor: Replace poll with pop in Queue and Deque (#415)
@ -68,7 +68,7 @@ void push(ArrayQueue *queue, int num) {
|
||||
}
|
||||
|
||||
/* 出队 */
|
||||
void poll(ArrayQueue *queue) {
|
||||
void pop(ArrayQueue *queue) {
|
||||
int num = peek(queue);
|
||||
// 队首指针向后移动一位,若越过尾部则返回到数组头部
|
||||
queue->front = (queue->front + 1) % queue->queCapacity;
|
||||
@ -106,8 +106,8 @@ int main() {
|
||||
printf("队首元素 peek = %d\r\n", peekNum);
|
||||
|
||||
/* 元素出队 */
|
||||
poll(queue);
|
||||
printf("出队元素 poll = %d,出队后 queue = ", peekNum);
|
||||
pop(queue);
|
||||
printf("出队元素 pop = %d,出队后 queue = ", peekNum);
|
||||
printArrayQueue(queue);
|
||||
|
||||
/* 获取队列的长度 */
|
||||
@ -121,7 +121,7 @@ int main() {
|
||||
/* 测试环形数组 */
|
||||
for (int i = 0; i < 10; i++) {
|
||||
push(queue, i);
|
||||
poll(queue);
|
||||
pop(queue);
|
||||
printf("第 %d 轮入队 + 出队后 queue = ", i);
|
||||
printArrayQueue(queue);
|
||||
}
|
||||
|
@ -72,7 +72,7 @@ public:
|
||||
}
|
||||
|
||||
/* 队首出队 */
|
||||
int pollFirst() {
|
||||
int popFirst() {
|
||||
int num = peekFirst();
|
||||
// 队首指针向后移动一位
|
||||
front = index(front + 1);
|
||||
@ -81,7 +81,7 @@ public:
|
||||
}
|
||||
|
||||
/* 队尾出队 */
|
||||
int pollLast() {
|
||||
int popLast() {
|
||||
int num = peekLast();
|
||||
queSize--;
|
||||
return num;
|
||||
@ -139,11 +139,11 @@ int main() {
|
||||
PrintUtil::printVector(deque->toVector());
|
||||
|
||||
/* 元素出队 */
|
||||
int pollLast = deque->pollLast();
|
||||
cout << "队尾出队元素 = " << pollLast << ",队尾出队后 deque = ";
|
||||
int popLast = deque->popLast();
|
||||
cout << "队尾出队元素 = " << popLast << ",队尾出队后 deque = ";
|
||||
PrintUtil::printVector(deque->toVector());
|
||||
int pollFirst = deque->pollFirst();
|
||||
cout << "队首出队元素 = " << pollFirst << ",队首出队后 deque = ";
|
||||
int popFirst = deque->popFirst();
|
||||
cout << "队首出队元素 = " << popFirst << ",队首出队后 deque = ";
|
||||
PrintUtil::printVector(deque->toVector());
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
|
@ -56,7 +56,7 @@ public:
|
||||
}
|
||||
|
||||
/* 出队 */
|
||||
void poll() {
|
||||
void pop() {
|
||||
int num = peek();
|
||||
// 队首指针向后移动一位,若越过尾部则返回到数组头部
|
||||
front = (front + 1) % queCapacity;
|
||||
@ -102,8 +102,8 @@ int main() {
|
||||
cout << "队首元素 peek = " << peek << endl;
|
||||
|
||||
/* 元素出队 */
|
||||
queue->poll();
|
||||
cout << "出队元素 poll = " << peek << ",出队后 queue = ";
|
||||
queue->pop();
|
||||
cout << "出队元素 pop = " << peek << ",出队后 queue = ";
|
||||
PrintUtil::printVector(queue->toVector());
|
||||
|
||||
/* 获取队列的长度 */
|
||||
@ -117,7 +117,7 @@ int main() {
|
||||
/* 测试环形数组 */
|
||||
for (int i = 0; i < 10; i++) {
|
||||
queue->push(i);
|
||||
queue->poll();
|
||||
queue->pop();
|
||||
cout << "第 " << i << " 轮入队 + 出队后 queue = ";
|
||||
PrintUtil::printVector(queue->toVector());
|
||||
}
|
||||
|
@ -79,7 +79,7 @@ public:
|
||||
}
|
||||
|
||||
/* 出队操作 */
|
||||
int poll(bool isFront) {
|
||||
int pop(bool isFront) {
|
||||
// 若队列为空,直接返回 -1
|
||||
if (isEmpty())
|
||||
return -1;
|
||||
@ -110,13 +110,13 @@ public:
|
||||
}
|
||||
|
||||
/* 队首出队 */
|
||||
int pollFirst() {
|
||||
return poll(true);
|
||||
int popFirst() {
|
||||
return pop(true);
|
||||
}
|
||||
|
||||
/* 队尾出队 */
|
||||
int pollLast() {
|
||||
return poll(false);
|
||||
int popLast() {
|
||||
return pop(false);
|
||||
}
|
||||
|
||||
/* 访问队首元素 */
|
||||
@ -166,11 +166,11 @@ int main() {
|
||||
PrintUtil::printVector(deque->toVector());
|
||||
|
||||
/* 元素出队 */
|
||||
int pollLast = deque->pollLast();
|
||||
cout << "队尾出队元素 = " << pollLast << ",队尾出队后 deque = ";
|
||||
int popLast = deque->popLast();
|
||||
cout << "队尾出队元素 = " << popLast << ",队尾出队后 deque = ";
|
||||
PrintUtil::printVector(deque->toVector());
|
||||
int pollFirst = deque->pollFirst();
|
||||
cout << "队首出队元素 = " << pollFirst << ",队首出队后 deque = ";
|
||||
int popFirst = deque->popFirst();
|
||||
cout << "队首出队元素 = " << popFirst << ",队首出队后 deque = ";
|
||||
PrintUtil::printVector(deque->toVector());
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
|
@ -52,7 +52,7 @@ public:
|
||||
}
|
||||
|
||||
/* 出队 */
|
||||
void poll() {
|
||||
void pop() {
|
||||
int num = peek();
|
||||
// 删除头结点
|
||||
ListNode *tmp = front;
|
||||
@ -101,8 +101,8 @@ int main() {
|
||||
cout << "队首元素 peek = " << peek << endl;
|
||||
|
||||
/* 元素出队 */
|
||||
queue->poll();
|
||||
cout << "出队元素 poll = " << peek << ",出队后 queue = ";
|
||||
queue->pop();
|
||||
cout << "出队元素 pop = " << peek << ",出队后 queue = ";
|
||||
PrintUtil::printVector(queue->toVector());
|
||||
|
||||
/* 获取队列的长度 */
|
||||
|
@ -81,7 +81,7 @@ namespace hello_algo.chapter_stack_and_queue
|
||||
}
|
||||
|
||||
/* 队首出队 */
|
||||
public int pollFirst()
|
||||
public int popFirst()
|
||||
{
|
||||
int num = peekFirst();
|
||||
// 队首指针向后移动一位
|
||||
@ -91,7 +91,7 @@ namespace hello_algo.chapter_stack_and_queue
|
||||
}
|
||||
|
||||
/* 队尾出队 */
|
||||
public int pollLast()
|
||||
public int popLast()
|
||||
{
|
||||
int num = peekLast();
|
||||
queSize--;
|
||||
@ -158,10 +158,10 @@ namespace hello_algo.chapter_stack_and_queue
|
||||
Console.WriteLine("元素 1 队首入队后 deque = " + string.Join(" ", deque.toArray()));
|
||||
|
||||
/* 元素出队 */
|
||||
int pollLast = deque.pollLast();
|
||||
Console.WriteLine("队尾出队元素 = " + pollLast + ",队尾出队后 deque = " + string.Join(" ", deque.toArray()));
|
||||
int pollFirst = deque.pollFirst();
|
||||
Console.WriteLine("队首出队元素 = " + pollFirst + ",队首出队后 deque = " + string.Join(" ", deque.toArray()));
|
||||
int popLast = deque.popLast();
|
||||
Console.WriteLine("队尾出队元素 = " + popLast + ",队尾出队后 deque = " + string.Join(" ", deque.toArray()));
|
||||
int popFirst = deque.popFirst();
|
||||
Console.WriteLine("队首出队元素 = " + popFirst + ",队首出队后 deque = " + string.Join(" ", deque.toArray()));
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
int size = deque.size();
|
||||
|
@ -56,7 +56,7 @@ class ArrayQueue
|
||||
}
|
||||
|
||||
/* 出队 */
|
||||
public int poll()
|
||||
public int pop()
|
||||
{
|
||||
int num = peek();
|
||||
// 队首指针向后移动一位,若越过尾部则返回到数组头部
|
||||
@ -108,8 +108,8 @@ public class array_queue
|
||||
Console.WriteLine("队首元素 peek = " + peek);
|
||||
|
||||
/* 元素出队 */
|
||||
int poll = queue.poll();
|
||||
Console.WriteLine("出队元素 poll = " + poll + ",出队后 queue = " + string.Join(",", queue.toArray()));
|
||||
int pop = queue.pop();
|
||||
Console.WriteLine("出队元素 pop = " + pop + ",出队后 queue = " + string.Join(",", queue.toArray()));
|
||||
|
||||
/* 获取队列的长度 */
|
||||
int size = queue.size();
|
||||
@ -123,7 +123,7 @@ public class array_queue
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
queue.push(i);
|
||||
queue.poll();
|
||||
queue.pop();
|
||||
Console.WriteLine("第 " + i + " 轮入队 + 出队后 queue = " + string.Join(",", queue.toArray()));
|
||||
}
|
||||
}
|
||||
|
@ -90,7 +90,7 @@ namespace hello_algo.chapter_stack_and_queue
|
||||
}
|
||||
|
||||
/* 出队操作 */
|
||||
private int? poll(bool isFront)
|
||||
private int? pop(bool isFront)
|
||||
{
|
||||
// 若队列为空,直接返回 null
|
||||
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()));
|
||||
|
||||
/* 元素出队 */
|
||||
int? pollLast = deque.pollLast();
|
||||
Console.WriteLine("队尾出队元素 = " + pollLast + ",队尾出队后 deque = " + string.Join(" ", deque.toArray()));
|
||||
int? pollFirst = deque.pollFirst();
|
||||
Console.WriteLine("队首出队元素 = " + pollFirst + ",队首出队后 deque = " + string.Join(" ", deque.toArray()));
|
||||
int? popLast = deque.popLast();
|
||||
Console.WriteLine("队尾出队元素 = " + popLast + ",队尾出队后 deque = " + string.Join(" ", deque.toArray()));
|
||||
int? popFirst = deque.popFirst();
|
||||
Console.WriteLine("队首出队元素 = " + popFirst + ",队首出队后 deque = " + string.Join(" ", deque.toArray()));
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
int size = deque.size();
|
||||
|
@ -54,7 +54,7 @@ class LinkedListQueue
|
||||
}
|
||||
|
||||
/* 出队 */
|
||||
public int poll()
|
||||
public int pop()
|
||||
{
|
||||
int num = peek();
|
||||
// 删除头结点
|
||||
@ -109,8 +109,8 @@ public class linkedlist_queue
|
||||
Console.WriteLine("队首元素 peek = " + peek);
|
||||
|
||||
/* 元素出队 */
|
||||
int poll = queue.poll();
|
||||
Console.WriteLine("出队元素 poll = " + poll + ",出队后 queue = " + String.Join(",", queue.toArray()));
|
||||
int pop = queue.pop();
|
||||
Console.WriteLine("出队元素 pop = " + pop + ",出队后 queue = " + String.Join(",", queue.toArray()));
|
||||
|
||||
/* 获取队列的长度 */
|
||||
int size = queue.size();
|
||||
|
@ -29,8 +29,8 @@ public class queue
|
||||
Console.WriteLine("队首元素 peek = " + peek);
|
||||
|
||||
/* 元素出队 */
|
||||
int poll = queue.Dequeue();
|
||||
Console.WriteLine("出队元素 poll = " + poll + ",出队后 queue = " + String.Join(",", queue.ToArray()));
|
||||
int pop = queue.Dequeue();
|
||||
Console.WriteLine("出队元素 pop = " + pop + ",出队后 queue = " + String.Join(",", queue.ToArray()));
|
||||
|
||||
/* 获取队列的长度 */
|
||||
int size = queue.Count();
|
||||
|
@ -47,7 +47,7 @@ func (q *arrayQueue) push(num int) {
|
||||
}
|
||||
|
||||
/* 出队 */
|
||||
func (q *arrayQueue) poll() any {
|
||||
func (q *arrayQueue) pop() any {
|
||||
num := q.peek()
|
||||
// 队首指针向后移动一位,若越过尾部则返回到数组头部
|
||||
q.front = (q.front + 1) % q.queCapacity
|
||||
|
@ -112,11 +112,11 @@ func TestLinkedListDeque(t *testing.T) {
|
||||
fmt.Println("队尾元素 rear =", rear)
|
||||
|
||||
// 元素出队
|
||||
pollFirst := deque.pollFirst()
|
||||
fmt.Print("队首出队元素 pollFirst = ", pollFirst, ",队首出队后 deque = ")
|
||||
popFirst := deque.popFirst()
|
||||
fmt.Print("队首出队元素 popFirst = ", popFirst, ",队首出队后 deque = ")
|
||||
PrintList(deque.toList())
|
||||
pollLast := deque.pollLast()
|
||||
fmt.Print("队尾出队元素 pollLast = ", pollLast, ",队尾出队后 deque = ")
|
||||
popLast := deque.popLast()
|
||||
fmt.Print("队尾出队元素 popLast = ", popLast, ",队尾出队后 deque = ")
|
||||
PrintList(deque.toList())
|
||||
|
||||
// 获取队的长度
|
||||
@ -136,6 +136,6 @@ func BenchmarkLinkedListDeque(b *testing.B) {
|
||||
deque.pushLast(777)
|
||||
}
|
||||
for i := 0; i < b.N; i++ {
|
||||
deque.pollFirst()
|
||||
deque.popFirst()
|
||||
}
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ func (s *linkedListDeque) pushLast(value any) {
|
||||
}
|
||||
|
||||
/* 队首元素出队 */
|
||||
func (s *linkedListDeque) pollFirst() any {
|
||||
func (s *linkedListDeque) popFirst() any {
|
||||
if s.isEmpty() {
|
||||
return nil
|
||||
}
|
||||
@ -42,7 +42,7 @@ func (s *linkedListDeque) pollFirst() any {
|
||||
}
|
||||
|
||||
/* 队尾元素出队 */
|
||||
func (s *linkedListDeque) pollLast() any {
|
||||
func (s *linkedListDeque) popLast() any {
|
||||
if s.isEmpty() {
|
||||
return nil
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ func (s *linkedListQueue) push(value any) {
|
||||
}
|
||||
|
||||
/* 出队 */
|
||||
func (s *linkedListQueue) poll() any {
|
||||
func (s *linkedListQueue) pop() any {
|
||||
if s.isEmpty() {
|
||||
return nil
|
||||
}
|
||||
|
@ -31,9 +31,9 @@ func TestQueue(t *testing.T) {
|
||||
fmt.Println("队首元素 peek =", peek.Value)
|
||||
|
||||
/* 元素出队 */
|
||||
poll := queue.Front()
|
||||
queue.Remove(poll)
|
||||
fmt.Print("出队元素 poll = ", poll.Value, ",出队后 queue = ")
|
||||
pop := queue.Front()
|
||||
queue.Remove(pop)
|
||||
fmt.Print("出队元素 pop = ", pop.Value, ",出队后 queue = ")
|
||||
PrintList(queue)
|
||||
|
||||
/* 获取队列的长度 */
|
||||
@ -64,8 +64,8 @@ func TestArrayQueue(t *testing.T) {
|
||||
fmt.Println("队首元素 peek =", peek)
|
||||
|
||||
// 元素出队
|
||||
poll := queue.poll()
|
||||
fmt.Print("出队元素 poll = ", poll, ", 出队后 queue = ")
|
||||
pop := queue.pop()
|
||||
fmt.Print("出队元素 pop = ", pop, ", 出队后 queue = ")
|
||||
PrintSlice(queue.toSlice())
|
||||
|
||||
// 获取队的长度
|
||||
@ -79,7 +79,7 @@ func TestArrayQueue(t *testing.T) {
|
||||
/* 测试环形数组 */
|
||||
for i := 0; i < 10; i++ {
|
||||
queue.push(i)
|
||||
queue.poll()
|
||||
queue.pop()
|
||||
fmt.Print("第", i, "轮入队 + 出队后 queue =")
|
||||
PrintSlice(queue.toSlice())
|
||||
}
|
||||
@ -103,8 +103,8 @@ func TestLinkedListQueue(t *testing.T) {
|
||||
fmt.Println("队首元素 peek =", peek)
|
||||
|
||||
// 元素出队
|
||||
poll := queue.poll()
|
||||
fmt.Print("出队元素 poll = ", poll, ", 出队后 queue = ")
|
||||
pop := queue.pop()
|
||||
fmt.Print("出队元素 pop = ", pop, ", 出队后 queue = ")
|
||||
PrintList(queue.toList())
|
||||
|
||||
// 获取队的长度
|
||||
@ -125,7 +125,7 @@ func BenchmarkArrayQueue(b *testing.B) {
|
||||
queue.push(777)
|
||||
}
|
||||
for i := 0; i < b.N; i++ {
|
||||
queue.poll()
|
||||
queue.pop()
|
||||
}
|
||||
}
|
||||
|
||||
@ -137,6 +137,6 @@ func BenchmarkLinkedQueue(b *testing.B) {
|
||||
queue.push(777)
|
||||
}
|
||||
for i := 0; i < b.N; i++ {
|
||||
queue.poll()
|
||||
queue.pop()
|
||||
}
|
||||
}
|
||||
|
@ -71,7 +71,7 @@ class ArrayDeque {
|
||||
}
|
||||
|
||||
/* 队首出队 */
|
||||
public int pollFirst() {
|
||||
public int popFirst() {
|
||||
int num = peekFirst();
|
||||
// 队首指针向后移动一位
|
||||
front = index(front + 1);
|
||||
@ -80,7 +80,7 @@ class ArrayDeque {
|
||||
}
|
||||
|
||||
/* 队尾出队 */
|
||||
public int pollLast() {
|
||||
public int popLast() {
|
||||
int num = peekLast();
|
||||
queSize--;
|
||||
return num;
|
||||
@ -135,10 +135,10 @@ public class array_deque {
|
||||
System.out.println("元素 1 队首入队后 deque = " + Arrays.toString(deque.toArray()));
|
||||
|
||||
/* 元素出队 */
|
||||
int pollLast = deque.pollLast();
|
||||
System.out.println("队尾出队元素 = " + pollLast + ",队尾出队后 deque = " + Arrays.toString(deque.toArray()));
|
||||
int pollFirst = deque.pollFirst();
|
||||
System.out.println("队首出队元素 = " + pollFirst + ",队首出队后 deque = " + Arrays.toString(deque.toArray()));
|
||||
int popLast = deque.popLast();
|
||||
System.out.println("队尾出队元素 = " + popLast + ",队尾出队后 deque = " + Arrays.toString(deque.toArray()));
|
||||
int popFirst = deque.popFirst();
|
||||
System.out.println("队首出队元素 = " + popFirst + ",队首出队后 deque = " + Arrays.toString(deque.toArray()));
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
int size = deque.size();
|
||||
|
@ -49,7 +49,7 @@ class ArrayQueue {
|
||||
}
|
||||
|
||||
/* 出队 */
|
||||
public int poll() {
|
||||
public int pop() {
|
||||
int num = peek();
|
||||
// 队首指针向后移动一位,若越过尾部则返回到数组头部
|
||||
front = (front + 1) % capacity();
|
||||
@ -94,8 +94,8 @@ public class array_queue {
|
||||
System.out.println("队首元素 peek = " + peek);
|
||||
|
||||
/* 元素出队 */
|
||||
int poll = queue.poll();
|
||||
System.out.println("出队元素 poll = " + poll + ",出队后 queue = " + Arrays.toString(queue.toArray()));
|
||||
int pop = queue.pop();
|
||||
System.out.println("出队元素 pop = " + pop + ",出队后 queue = " + Arrays.toString(queue.toArray()));
|
||||
|
||||
/* 获取队列的长度 */
|
||||
int size = queue.size();
|
||||
@ -108,7 +108,7 @@ public class array_queue {
|
||||
/* 测试环形数组 */
|
||||
for (int i = 0; i < 10; i++) {
|
||||
queue.push(i);
|
||||
queue.poll();
|
||||
queue.pop();
|
||||
System.out.println("第 " + i + " 轮入队 + 出队后 queue = " + Arrays.toString(queue.toArray()));
|
||||
}
|
||||
}
|
||||
|
@ -30,10 +30,10 @@ public class deque {
|
||||
System.out.println("元素 1 队首入队后 deque = " + deque);
|
||||
|
||||
/* 元素出队 */
|
||||
int pollLast = deque.pollLast();
|
||||
System.out.println("队尾出队元素 = " + pollLast + ",队尾出队后 deque = " + deque);
|
||||
int pollFirst = deque.pollFirst();
|
||||
System.out.println("队首出队元素 = " + pollFirst + ",队首出队后 deque = " + deque);
|
||||
int popLast = deque.pollLast();
|
||||
System.out.println("队尾出队元素 = " + popLast + ",队尾出队后 deque = " + deque);
|
||||
int popFirst = deque.pollFirst();
|
||||
System.out.println("队首出队元素 = " + popFirst + ",队首出队后 deque = " + deque);
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
int size = deque.size();
|
||||
|
@ -71,7 +71,7 @@ class LinkedListDeque {
|
||||
}
|
||||
|
||||
/* 出队操作 */
|
||||
private Integer poll(boolean isFront) {
|
||||
private Integer pop(boolean isFront) {
|
||||
// 若队列为空,直接返回 null
|
||||
if (isEmpty())
|
||||
return null;
|
||||
@ -102,13 +102,13 @@ class LinkedListDeque {
|
||||
}
|
||||
|
||||
/* 队首出队 */
|
||||
public Integer pollFirst() {
|
||||
return poll(true);
|
||||
public Integer popFirst() {
|
||||
return pop(true);
|
||||
}
|
||||
|
||||
/* 队尾出队 */
|
||||
public Integer pollLast() {
|
||||
return poll(false);
|
||||
public Integer popLast() {
|
||||
return pop(false);
|
||||
}
|
||||
|
||||
/* 访问队首元素 */
|
||||
@ -155,10 +155,10 @@ public class linkedlist_deque {
|
||||
System.out.println("元素 1 队首入队后 deque = " + Arrays.toString(deque.toArray()));
|
||||
|
||||
/* 元素出队 */
|
||||
int pollLast = deque.pollLast();
|
||||
System.out.println("队尾出队元素 = " + pollLast + ",队尾出队后 deque = " + Arrays.toString(deque.toArray()));
|
||||
int pollFirst = deque.pollFirst();
|
||||
System.out.println("队首出队元素 = " + pollFirst + ",队首出队后 deque = " + Arrays.toString(deque.toArray()));
|
||||
int popLast = deque.popLast();
|
||||
System.out.println("队尾出队元素 = " + popLast + ",队尾出队后 deque = " + Arrays.toString(deque.toArray()));
|
||||
int popFirst = deque.popFirst();
|
||||
System.out.println("队首出队元素 = " + popFirst + ",队首出队后 deque = " + Arrays.toString(deque.toArray()));
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
int size = deque.size();
|
||||
|
@ -45,7 +45,7 @@ class LinkedListQueue {
|
||||
}
|
||||
|
||||
/* 出队 */
|
||||
public int poll() {
|
||||
public int pop() {
|
||||
int num = peek();
|
||||
// 删除头结点
|
||||
front = front.next;
|
||||
@ -90,8 +90,8 @@ public class linkedlist_queue {
|
||||
System.out.println("队首元素 peek = " + peek);
|
||||
|
||||
/* 元素出队 */
|
||||
int poll = queue.poll();
|
||||
System.out.println("出队元素 poll = " + poll + ",出队后 queue = " + Arrays.toString(queue.toArray()));
|
||||
int pop = queue.pop();
|
||||
System.out.println("出队元素 pop = " + pop + ",出队后 queue = " + Arrays.toString(queue.toArray()));
|
||||
|
||||
/* 获取队列的长度 */
|
||||
int size = queue.size();
|
||||
|
@ -26,8 +26,8 @@ public class queue {
|
||||
System.out.println("队首元素 peek = " + peek);
|
||||
|
||||
/* 元素出队 */
|
||||
int poll = queue.poll();
|
||||
System.out.println("出队元素 poll = " + poll + ",出队后 queue = " + queue);
|
||||
int pop = queue.poll();
|
||||
System.out.println("出队元素 pop = " + pop + ",出队后 queue = " + queue);
|
||||
|
||||
/* 获取队列的长度 */
|
||||
int size = queue.size();
|
||||
|
@ -68,7 +68,7 @@ class ArrayDeque {
|
||||
}
|
||||
|
||||
/* 队首出队 */
|
||||
pollFirst() {
|
||||
popFirst() {
|
||||
const num = this.peekFirst();
|
||||
// 队首指针向后移动一位
|
||||
this.#front = this.index(this.#front + 1);
|
||||
@ -77,7 +77,7 @@ class ArrayDeque {
|
||||
}
|
||||
|
||||
/* 队尾出队 */
|
||||
pollLast() {
|
||||
popLast() {
|
||||
const num = this.peekLast();
|
||||
this.#queSize--;
|
||||
return num;
|
||||
@ -132,10 +132,10 @@ deque.pushFirst(1);
|
||||
console.log("元素 1 队首入队后 deque = [" + deque.toArray() + "]");
|
||||
|
||||
/* 元素出队 */
|
||||
const pollLast = deque.pollLast();
|
||||
console.log("队尾出队元素 = " + pollLast + ",队尾出队后 deque = [" + deque.toArray() + "]");
|
||||
const pollFirst = deque.pollFirst();
|
||||
console.log("队首出队元素 = " + pollFirst + ",队首出队后 deque = [" + deque.toArray()+ "]");
|
||||
const popLast = deque.popLast();
|
||||
console.log("队尾出队元素 = " + popLast + ",队尾出队后 deque = [" + deque.toArray() + "]");
|
||||
const popFirst = deque.popFirst();
|
||||
console.log("队首出队元素 = " + popFirst + ",队首出队后 deque = [" + deque.toArray()+ "]");
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
const size = deque.size();
|
||||
|
@ -44,7 +44,7 @@ class ArrayQueue {
|
||||
}
|
||||
|
||||
/* 出队 */
|
||||
poll() {
|
||||
pop() {
|
||||
const num = this.peek();
|
||||
// 队首指针向后移动一位,若越过尾部则返回到数组头部
|
||||
this.#front = (this.#front + 1) % this.capacity;
|
||||
@ -89,8 +89,8 @@ const peek = queue.peek();
|
||||
console.log("队首元素 peek = " + peek);
|
||||
|
||||
/* 元素出队 */
|
||||
const poll = queue.poll();
|
||||
console.log("出队元素 poll = " + poll + ",出队后 queue =", queue.toArray());
|
||||
const pop = queue.pop();
|
||||
console.log("出队元素 pop = " + pop + ",出队后 queue =", queue.toArray());
|
||||
|
||||
/* 获取队列的长度 */
|
||||
const size = queue.size;
|
||||
@ -103,6 +103,6 @@ console.log("队列是否为空 = " + empty);
|
||||
/* 测试环形数组 */
|
||||
for (let i = 0; i < 10; i++) {
|
||||
queue.push(i);
|
||||
queue.poll();
|
||||
queue.pop();
|
||||
console.log("第 " + i + " 轮入队 + 出队后 queue =", queue.toArray());
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ class LinkedListDeque {
|
||||
}
|
||||
|
||||
/* 队尾出队操作 */
|
||||
pollLast() {
|
||||
popLast() {
|
||||
if (this.#queSize === 0) {
|
||||
return null;
|
||||
}
|
||||
@ -79,7 +79,7 @@ class LinkedListDeque {
|
||||
}
|
||||
|
||||
/* 队首出队操作 */
|
||||
pollFirst() {
|
||||
popFirst() {
|
||||
if (this.#queSize === 0) {
|
||||
return null;
|
||||
}
|
||||
@ -151,11 +151,11 @@ console.log("元素 1 队首入队后 linkedListDeque = ");
|
||||
linkedListDeque.print();
|
||||
|
||||
/* 元素出队 */
|
||||
const pollLast = linkedListDeque.pollLast();
|
||||
console.log("队尾出队元素 = " + pollLast + ",队尾出队后 linkedListDeque = ");
|
||||
const popLast = linkedListDeque.popLast();
|
||||
console.log("队尾出队元素 = " + popLast + ",队尾出队后 linkedListDeque = ");
|
||||
linkedListDeque.print();
|
||||
const pollFirst = linkedListDeque.pollFirst();
|
||||
console.log("队首出队元素 = " + pollFirst + ",队首出队后 linkedListDeque = ");
|
||||
const popFirst = linkedListDeque.popFirst();
|
||||
console.log("队首出队元素 = " + popFirst + ",队首出队后 linkedListDeque = ");
|
||||
linkedListDeque.print();
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
|
@ -44,7 +44,7 @@ class LinkedListQueue {
|
||||
}
|
||||
|
||||
/* 出队 */
|
||||
poll() {
|
||||
pop() {
|
||||
const num = this.peek();
|
||||
// 删除头结点
|
||||
this.#front = this.#front.next;
|
||||
@ -90,8 +90,8 @@ const peek = queue.peek();
|
||||
console.log("队首元素 peek = " + peek);
|
||||
|
||||
/* 元素出队 */
|
||||
const poll = queue.poll();
|
||||
console.log("出队元素 poll = " + poll + ",出队后 queue = " + queue.toArray());
|
||||
const pop = queue.pop();
|
||||
console.log("出队元素 pop = " + pop + ",出队后 queue = " + queue.toArray());
|
||||
|
||||
/* 获取队列的长度 */
|
||||
const size = queue.size;
|
||||
|
@ -23,8 +23,8 @@ console.log("队首元素 peek =", peek);
|
||||
|
||||
/* 元素出队 */
|
||||
// 底层是数组,因此 shift() 方法的时间复杂度为 O(n)
|
||||
const poll = queue.shift();
|
||||
console.log("出队元素 poll =", poll, ",出队后 queue = ", queue);
|
||||
const pop = queue.shift();
|
||||
console.log("出队元素 pop =", pop, ",出队后 queue = ", queue);
|
||||
|
||||
/* 获取队列的长度 */
|
||||
const size = queue.length;
|
||||
|
@ -60,7 +60,7 @@ class ArrayDeque:
|
||||
self.__nums[rear] = num
|
||||
self.__size += 1
|
||||
|
||||
def poll_first(self) -> int:
|
||||
def pop_first(self) -> int:
|
||||
""" 队首出队 """
|
||||
num = self.peek_first()
|
||||
# 队首指针向后移动一位
|
||||
@ -68,7 +68,7 @@ class ArrayDeque:
|
||||
self.__size -= 1
|
||||
return num
|
||||
|
||||
def poll_last(self) -> int:
|
||||
def pop_last(self) -> int:
|
||||
""" 队尾出队 """
|
||||
num = self.peek_last()
|
||||
self.__size -= 1
|
||||
@ -117,10 +117,10 @@ if __name__ == "__main__":
|
||||
print("元素 1 队首入队后 deque =", deque.to_array())
|
||||
|
||||
""" 元素出队 """
|
||||
poll_last: int = deque.poll_last()
|
||||
print("队尾出队元素 =", poll_last, ",队尾出队后 deque =", deque.to_array())
|
||||
poll_first: int = deque.poll_first()
|
||||
print("队首出队元素 =", poll_first, ",队首出队后 deque =", deque.to_array())
|
||||
pop_last: int = deque.pop_last()
|
||||
print("队尾出队元素 =", pop_last, ",队尾出队后 deque =", deque.to_array())
|
||||
pop_first: int = deque.pop_first()
|
||||
print("队首出队元素 =", pop_first, ",队首出队后 deque =", deque.to_array())
|
||||
|
||||
""" 获取双向队列的长度 """
|
||||
size: int = deque.size()
|
||||
|
@ -38,7 +38,7 @@ class ArrayQueue:
|
||||
self.__nums[rear] = num
|
||||
self.__size += 1
|
||||
|
||||
def poll(self) -> int:
|
||||
def pop(self) -> int:
|
||||
""" 出队 """
|
||||
num: int = self.peek()
|
||||
# 队首指针向后移动一位,若越过尾部则返回到数组头部
|
||||
@ -79,8 +79,8 @@ if __name__ == "__main__":
|
||||
print("队首元素 peek =", peek)
|
||||
|
||||
""" 元素出队 """
|
||||
poll: int = queue.poll()
|
||||
print("出队元素 poll =", poll)
|
||||
pop: int = queue.pop()
|
||||
print("出队元素 pop =", pop)
|
||||
print("出队后 queue =", queue.to_list())
|
||||
|
||||
""" 获取队列的长度 """
|
||||
@ -94,5 +94,5 @@ if __name__ == "__main__":
|
||||
""" 测试环形数组 """
|
||||
for i in range(10):
|
||||
queue.push(i)
|
||||
queue.poll()
|
||||
queue.pop()
|
||||
print("第", i, "轮入队 + 出队后 queue = ", queue.to_list())
|
||||
|
@ -60,7 +60,7 @@ class LinkedListDeque:
|
||||
""" 队尾入队 """
|
||||
self.push(num, False)
|
||||
|
||||
def poll(self, is_front: bool) -> int:
|
||||
def pop(self, is_front: bool) -> int:
|
||||
""" 出队操作 """
|
||||
# 若队列为空,直接返回 None
|
||||
if self.is_empty():
|
||||
@ -86,13 +86,13 @@ class LinkedListDeque:
|
||||
self.__size -= 1 # 更新队列长度
|
||||
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:
|
||||
""" 访问队首元素 """
|
||||
@ -134,10 +134,10 @@ if __name__ == "__main__":
|
||||
print("元素 1 队首入队后 deque =", deque.to_array())
|
||||
|
||||
""" 元素出队 """
|
||||
poll_last: int = deque.poll_last()
|
||||
print("队尾出队元素 =", poll_last, ",队尾出队后 deque =", deque.to_array())
|
||||
poll_first: int = deque.poll_first()
|
||||
print("队首出队元素 =", poll_first, ",队首出队后 deque =", deque.to_array())
|
||||
pop_last: int = deque.pop_last()
|
||||
print("队尾出队元素 =", pop_last, ",队尾出队后 deque =", deque.to_array())
|
||||
pop_first: int = deque.pop_first()
|
||||
print("队首出队元素 =", pop_first, ",队首出队后 deque =", deque.to_array())
|
||||
|
||||
""" 获取双向队列的长度 """
|
||||
size: int = deque.size()
|
||||
|
@ -38,7 +38,7 @@ class LinkedListQueue:
|
||||
self.__rear = node
|
||||
self.__size += 1
|
||||
|
||||
def poll(self) -> int:
|
||||
def pop(self) -> int:
|
||||
""" 出队 """
|
||||
num = self.peek()
|
||||
# 删除头结点
|
||||
@ -81,8 +81,8 @@ if __name__ == "__main__":
|
||||
print("队首元素 front =", peek)
|
||||
|
||||
""" 元素出队 """
|
||||
pop_front: int = queue.poll()
|
||||
print("出队元素 poll =", pop_front)
|
||||
pop_front: int = queue.pop()
|
||||
print("出队元素 pop =", pop_front)
|
||||
print("出队后 queue =", queue.to_list())
|
||||
|
||||
""" 获取队列的长度 """
|
||||
|
@ -36,7 +36,7 @@ impl ArrayQueue {
|
||||
self.que_size += 1;
|
||||
}
|
||||
|
||||
fn poll(&mut self) -> i32 {
|
||||
fn pop(&mut self) -> i32 {
|
||||
let num = self.peek();
|
||||
self.front = (self.front + 1) % self.que_capacity;
|
||||
self.que_size -= 1;
|
||||
@ -77,10 +77,10 @@ fn main() {
|
||||
let peek = queue.peek();
|
||||
println!("队首元素 peek = {}", peek);
|
||||
|
||||
let poll = queue.poll();
|
||||
let pop = queue.pop();
|
||||
println!(
|
||||
"出队元素 poll = {:?},出队后 queue = {:?}",
|
||||
poll,
|
||||
"出队元素 pop = {:?},出队后 queue = {:?}",
|
||||
pop,
|
||||
queue.to_vector()
|
||||
);
|
||||
|
||||
@ -92,7 +92,7 @@ fn main() {
|
||||
|
||||
for i in 0..10 {
|
||||
queue.push(i);
|
||||
queue.poll();
|
||||
queue.pop();
|
||||
println!("第 {:?} 轮入队 + 出队后 queue = {:?}", i, queue.to_vector());
|
||||
}
|
||||
}
|
||||
|
@ -27,11 +27,11 @@ pub fn main() {
|
||||
print!("\n队尾元素 peekLast = {peek_last}");
|
||||
|
||||
// 元素出队
|
||||
let poll_first = deque.pop_front().unwrap(); // 队首元素出队
|
||||
print!("\n队首出队元素 pollFirst = {poll_first},队首出队后 deque = ");
|
||||
let pop_first = deque.pop_front().unwrap(); // 队首元素出队
|
||||
print!("\n队首出队元素 popFirst = {pop_first},队首出队后 deque = ");
|
||||
print_util::print_queue(&deque);
|
||||
let poll_last = deque.pop_back().unwrap(); // 队尾元素出队
|
||||
print!("\n队尾出队元素 pollLast = {poll_last},队尾出队后 deque = ");
|
||||
let pop_last = deque.pop_back().unwrap(); // 队尾元素出队
|
||||
print!("\n队尾出队元素 popLast = {pop_last},队尾出队后 deque = ");
|
||||
print_util::print_queue(&deque);
|
||||
|
||||
// 获取双向队列的长度
|
||||
|
@ -27,8 +27,8 @@ pub fn main() {
|
||||
println!("\n队首元素 peek = {peek}");
|
||||
|
||||
// 元素出队
|
||||
let poll = queue.pop_front().unwrap();
|
||||
print!("出队元素 poll = {poll},出队后 queue = ");
|
||||
let pop = queue.pop_front().unwrap();
|
||||
print!("出队元素 pop = {pop},出队后 queue = ");
|
||||
print_util::print_queue(&queue);
|
||||
|
||||
// 获取队列的长度
|
||||
|
@ -68,7 +68,7 @@ class ArrayDeque {
|
||||
}
|
||||
|
||||
/* 队首出队 */
|
||||
func pollFirst() -> Int {
|
||||
func popFirst() -> Int {
|
||||
let num = peekFirst()
|
||||
// 队首指针向后移动一位
|
||||
front = index(i: front + 1)
|
||||
@ -77,7 +77,7 @@ class ArrayDeque {
|
||||
}
|
||||
|
||||
/* 队尾出队 */
|
||||
func pollLast() -> Int {
|
||||
func popLast() -> Int {
|
||||
let num = peekLast()
|
||||
queSize -= 1
|
||||
return num
|
||||
@ -136,10 +136,10 @@ enum _ArrayDeque {
|
||||
print("元素 1 队首入队后 deque = \(deque.toArray())")
|
||||
|
||||
/* 元素出队 */
|
||||
let pollLast = deque.pollLast()
|
||||
print("队尾出队元素 = \(pollLast),队尾出队后 deque = \(deque.toArray())")
|
||||
let pollFirst = deque.pollFirst()
|
||||
print("队首出队元素 = \(pollFirst),队首出队后 deque = \(deque.toArray())")
|
||||
let popLast = deque.popLast()
|
||||
print("队尾出队元素 = \(popLast),队尾出队后 deque = \(deque.toArray())")
|
||||
let popFirst = deque.popFirst()
|
||||
print("队首出队元素 = \(popFirst),队首出队后 deque = \(deque.toArray())")
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
let size = deque.size()
|
||||
|
@ -46,7 +46,7 @@ class ArrayQueue {
|
||||
|
||||
/* 出队 */
|
||||
@discardableResult
|
||||
func poll() -> Int {
|
||||
func pop() -> Int {
|
||||
let num = peek()
|
||||
// 队首指针向后移动一位,若越过尾部则返回到数组头部
|
||||
front = (front + 1) % capacity()
|
||||
@ -94,8 +94,8 @@ enum _ArrayQueue {
|
||||
print("队首元素 peek = \(peek)")
|
||||
|
||||
/* 元素出队 */
|
||||
let poll = queue.poll()
|
||||
print("出队元素 poll = \(poll),出队后 queue = \(queue.toArray())")
|
||||
let pop = queue.pop()
|
||||
print("出队元素 pop = \(pop),出队后 queue = \(queue.toArray())")
|
||||
|
||||
/* 获取队列的长度 */
|
||||
let size = queue.size()
|
||||
@ -108,7 +108,7 @@ enum _ArrayQueue {
|
||||
/* 测试环形数组 */
|
||||
for i in 0 ..< 10 {
|
||||
queue.push(num: i)
|
||||
queue.poll()
|
||||
queue.pop()
|
||||
print("第 \(i) 轮入队 + 出队后 queue = \(queue.toArray())")
|
||||
}
|
||||
}
|
||||
|
@ -27,11 +27,11 @@ enum Deque {
|
||||
print("队尾元素 peekLast = \(peekLast)")
|
||||
|
||||
/* 元素出队 */
|
||||
// 使用 Array 模拟时 pollFirst 的复杂度为 O(n)
|
||||
let pollFirst = deque.removeFirst()
|
||||
print("队首出队元素 pollFirst = \(pollFirst),队首出队后 deque = \(deque)")
|
||||
let pollLast = deque.removeLast()
|
||||
print("队尾出队元素 pollLast = \(pollLast),队尾出队后 deque = \(deque)")
|
||||
// 使用 Array 模拟时 popFirst 的复杂度为 O(n)
|
||||
let popFirst = deque.removeFirst()
|
||||
print("队首出队元素 popFirst = \(popFirst),队首出队后 deque = \(deque)")
|
||||
let popLast = deque.removeLast()
|
||||
print("队尾出队元素 popLast = \(popLast),队尾出队后 deque = \(deque)")
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
let size = deque.count
|
||||
|
@ -71,7 +71,7 @@ class LinkedListDeque {
|
||||
}
|
||||
|
||||
/* 出队操作 */
|
||||
private func poll(isFront: Bool) -> Int {
|
||||
private func pop(isFront: Bool) -> Int {
|
||||
if isEmpty() {
|
||||
fatalError("双向队列为空")
|
||||
}
|
||||
@ -103,13 +103,13 @@ class LinkedListDeque {
|
||||
}
|
||||
|
||||
/* 队首出队 */
|
||||
func pollFirst() -> Int {
|
||||
poll(isFront: true)
|
||||
func popFirst() -> Int {
|
||||
pop(isFront: true)
|
||||
}
|
||||
|
||||
/* 队尾出队 */
|
||||
func pollLast() -> Int {
|
||||
poll(isFront: false)
|
||||
func popLast() -> Int {
|
||||
pop(isFront: false)
|
||||
}
|
||||
|
||||
/* 访问队首元素 */
|
||||
@ -158,10 +158,10 @@ enum _LinkedListDeque {
|
||||
print("元素 1 队首入队后 deque = \(deque.toArray())")
|
||||
|
||||
/* 元素出队 */
|
||||
let pollLast = deque.pollLast()
|
||||
print("队尾出队元素 = \(pollLast),队尾出队后 deque = \(deque.toArray())")
|
||||
let pollFirst = deque.pollFirst()
|
||||
print("队首出队元素 = \(pollFirst),队首出队后 deque = \(deque.toArray())")
|
||||
let popLast = deque.popLast()
|
||||
print("队尾出队元素 = \(popLast),队尾出队后 deque = \(deque.toArray())")
|
||||
let popFirst = deque.popFirst()
|
||||
print("队首出队元素 = \(popFirst),队首出队后 deque = \(deque.toArray())")
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
let size = deque.size()
|
||||
|
@ -43,7 +43,7 @@ class LinkedListQueue {
|
||||
|
||||
/* 出队 */
|
||||
@discardableResult
|
||||
func poll() -> Int {
|
||||
func pop() -> Int {
|
||||
let num = peek()
|
||||
// 删除头结点
|
||||
front = front?.next
|
||||
@ -91,8 +91,8 @@ enum _LinkedListQueue {
|
||||
print("队首元素 peek = \(peek)")
|
||||
|
||||
/* 元素出队 */
|
||||
let poll = queue.poll()
|
||||
print("出队元素 poll = \(poll),出队后 queue = \(queue.toArray())")
|
||||
let pop = queue.pop()
|
||||
print("出队元素 pop = \(pop),出队后 queue = \(queue.toArray())")
|
||||
|
||||
/* 获取队列的长度 */
|
||||
let size = queue.size()
|
||||
|
@ -25,9 +25,9 @@ enum Queue {
|
||||
print("队首元素 peek = \(peek)")
|
||||
|
||||
/* 元素出队 */
|
||||
// 使用 Array 模拟时 poll 的复杂度为 O(n)
|
||||
// 使用 Array 模拟时 pop 的复杂度为 O(n)
|
||||
let pool = queue.removeFirst()
|
||||
print("出队元素 poll = \(pool),出队后 queue = \(queue)")
|
||||
print("出队元素 pop = \(pool),出队后 queue = \(queue)")
|
||||
|
||||
/* 获取队列的长度 */
|
||||
let size = queue.count
|
||||
|
@ -69,7 +69,7 @@ class ArrayDeque {
|
||||
}
|
||||
|
||||
/* 队首出队 */
|
||||
pollFirst(): number {
|
||||
popFirst(): number {
|
||||
const num: number = this.peekFirst();
|
||||
// 队首指针向后移动一位
|
||||
this.front = this.index(this.front + 1);
|
||||
@ -78,7 +78,7 @@ class ArrayDeque {
|
||||
}
|
||||
|
||||
/* 队尾出队 */
|
||||
pollLast(): number {
|
||||
popLast(): number {
|
||||
const num: number = this.peekLast();
|
||||
this.queSize--;
|
||||
return num;
|
||||
@ -133,10 +133,10 @@ deque.pushFirst(1);
|
||||
console.log("元素 1 队首入队后 deque = [" + deque.toArray() + "]");
|
||||
|
||||
/* 元素出队 */
|
||||
const pollLast = deque.pollLast();
|
||||
console.log("队尾出队元素 = " + pollLast + ",队尾出队后 deque = [" + deque.toArray() + "]");
|
||||
const pollFirst = deque.pollFirst();
|
||||
console.log("队首出队元素 = " + pollFirst + ",队首出队后 deque = [" + deque.toArray()+ "]");
|
||||
const popLast = deque.popLast();
|
||||
console.log("队尾出队元素 = " + popLast + ",队尾出队后 deque = [" + deque.toArray() + "]");
|
||||
const popFirst = deque.popFirst();
|
||||
console.log("队首出队元素 = " + popFirst + ",队首出队后 deque = [" + deque.toArray()+ "]");
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
const size = deque.size();
|
||||
|
@ -45,7 +45,7 @@ class ArrayQueue {
|
||||
}
|
||||
|
||||
/* 出队 */
|
||||
poll(): number {
|
||||
pop(): number {
|
||||
const num = this.peek();
|
||||
// 队首指针向后移动一位,若越过尾部则返回到数组头部
|
||||
this.front = (this.front + 1) % this.capacity;
|
||||
@ -89,8 +89,8 @@ const peek = queue.peek();
|
||||
console.log("队首元素 peek = " + peek);
|
||||
|
||||
/* 元素出队 */
|
||||
const poll = queue.poll();
|
||||
console.log("出队元素 poll = " + poll + ",出队后 queue =", queue.toArray());
|
||||
const pop = queue.pop();
|
||||
console.log("出队元素 pop = " + pop + ",出队后 queue =", queue.toArray());
|
||||
|
||||
/* 获取队列的长度 */
|
||||
const size = queue.size;
|
||||
@ -103,7 +103,7 @@ console.log("队列是否为空 = " + empty);
|
||||
/* 测试环形数组 */
|
||||
for (let i = 0; i < 10; i++) {
|
||||
queue.push(i);
|
||||
queue.poll();
|
||||
queue.pop();
|
||||
console.log("第 " + i + " 轮入队 + 出队后 queue =", queue.toArray());
|
||||
}
|
||||
|
||||
|
@ -62,7 +62,7 @@ class LinkedListDeque {
|
||||
}
|
||||
|
||||
/* 队尾出队操作 */
|
||||
pollLast(): number {
|
||||
popLast(): number {
|
||||
if (this.queSize === 0) {
|
||||
return null;
|
||||
}
|
||||
@ -79,7 +79,7 @@ class LinkedListDeque {
|
||||
}
|
||||
|
||||
/* 队首出队操作 */
|
||||
pollFirst(): number {
|
||||
popFirst(): number {
|
||||
if (this.queSize === 0) {
|
||||
return null;
|
||||
}
|
||||
@ -151,11 +151,11 @@ console.log("元素 1 队首入队后 linkedListDeque = ");
|
||||
linkedListDeque.print();
|
||||
|
||||
/* 元素出队 */
|
||||
const pollLast: number = linkedListDeque.pollLast();
|
||||
console.log("队尾出队元素 = " + pollLast + ",队尾出队后 linkedListDeque = ");
|
||||
const popLast: number = linkedListDeque.popLast();
|
||||
console.log("队尾出队元素 = " + popLast + ",队尾出队后 linkedListDeque = ");
|
||||
linkedListDeque.print();
|
||||
const pollFirst: number = linkedListDeque.pollFirst();
|
||||
console.log("队首出队元素 = " + pollFirst + ",队首出队后 linkedListDeque = ");
|
||||
const popFirst: number = linkedListDeque.popFirst();
|
||||
console.log("队首出队元素 = " + popFirst + ",队首出队后 linkedListDeque = ");
|
||||
linkedListDeque.print();
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
|
@ -44,7 +44,7 @@ class LinkedListQueue {
|
||||
}
|
||||
|
||||
/* 出队 */
|
||||
poll(): number {
|
||||
pop(): number {
|
||||
const num = this.peek();
|
||||
if (!this.front) throw new Error('队列为空');
|
||||
// 删除头结点
|
||||
@ -88,8 +88,8 @@ const peek = queue.peek();
|
||||
console.log('队首元素 peek = ' + peek);
|
||||
|
||||
/* 元素出队 */
|
||||
const poll = queue.poll();
|
||||
console.log('出队元素 poll = ' + poll + ',出队后 queue = ' + queue.toArray());
|
||||
const pop = queue.pop();
|
||||
console.log('出队元素 pop = ' + pop + ',出队后 queue = ' + queue.toArray());
|
||||
|
||||
/* 获取队列的长度 */
|
||||
const size = queue.size;
|
||||
|
@ -23,8 +23,8 @@ console.log("队首元素 peek =", peek);
|
||||
|
||||
/* 元素出队 */
|
||||
// 底层是数组,因此 shift() 方法的时间复杂度为 O(n)
|
||||
const poll = queue.shift();
|
||||
console.log("出队元素 poll =", poll, ",出队后 queue = ", queue);
|
||||
const pop = queue.shift();
|
||||
console.log("出队元素 pop =", pop, ",出队后 queue = ", queue);
|
||||
|
||||
/* 获取队列的长度 */
|
||||
const size = queue.length;
|
||||
|
@ -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();
|
||||
// 队首指针向后移动一位,若越过尾部则返回到数组头部
|
||||
self.front = (self.front + 1) % self.capacity();
|
||||
@ -115,8 +115,8 @@ pub fn main() !void {
|
||||
std.debug.print("\n队首元素 peek = {}", .{peek});
|
||||
|
||||
// 元素出队
|
||||
var poll = queue.poll();
|
||||
std.debug.print("\n出队元素 poll = {},出队后 queue = ", .{poll});
|
||||
var pop = queue.pop();
|
||||
std.debug.print("\n出队元素 pop = {},出队后 queue = ", .{pop});
|
||||
inc.PrintUtil.printArray(i32, try queue.toArray());
|
||||
|
||||
// 获取队列的长度
|
||||
@ -131,7 +131,7 @@ pub fn main() !void {
|
||||
var i: i32 = 0;
|
||||
while (i < 10) : (i += 1) {
|
||||
try queue.push(i);
|
||||
_ = queue.poll();
|
||||
_ = queue.pop();
|
||||
std.debug.print("\n第 {} 轮入队 + 出队后 queue = ", .{i});
|
||||
inc.PrintUtil.printArray(i32, try queue.toArray());
|
||||
}
|
||||
|
@ -32,11 +32,11 @@ pub fn main() !void {
|
||||
std.debug.print("\n队尾元素 peekLast = {}", .{peekLast});
|
||||
|
||||
// 元素出队
|
||||
var pollFirst = deque.popFirst().?.data; // 队首元素出队
|
||||
std.debug.print("\n队首出队元素 pollFirst = {},队首出队后 deque = ", .{pollFirst});
|
||||
var popFirst = deque.popFirst().?.data; // 队首元素出队
|
||||
std.debug.print("\n队首出队元素 popFirst = {},队首出队后 deque = ", .{popFirst});
|
||||
inc.PrintUtil.printQueue(i32, deque);
|
||||
var pollLast = deque.pop().?.data; // 队尾元素出队
|
||||
std.debug.print("\n队尾出队元素 pollLast = {},队尾出队后 deque = ", .{pollLast});
|
||||
var popLast = deque.pop().?.data; // 队尾元素出队
|
||||
std.debug.print("\n队尾出队元素 popLast = {},队尾出队后 deque = ", .{popLast});
|
||||
inc.PrintUtil.printQueue(i32, deque);
|
||||
|
||||
// 获取双向队列的长度
|
||||
|
@ -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("双向队列为空");
|
||||
var val: T = undefined;
|
||||
// 队首出队操作
|
||||
@ -125,13 +125,13 @@ pub fn LinkedListDeque(comptime T: type) type {
|
||||
}
|
||||
|
||||
// 队首出队
|
||||
pub fn pollFirst(self: *Self) T {
|
||||
return self.poll(true);
|
||||
pub fn popFirst(self: *Self) T {
|
||||
return self.pop(true);
|
||||
}
|
||||
|
||||
// 队尾出队
|
||||
pub fn pollLast(self: *Self) T {
|
||||
return self.poll(false);
|
||||
pub fn popLast(self: *Self) T {
|
||||
return self.pop(false);
|
||||
}
|
||||
|
||||
// 访问队首元素
|
||||
@ -188,11 +188,11 @@ pub fn main() !void {
|
||||
inc.PrintUtil.printArray(i32, try deque.toArray());
|
||||
|
||||
// 元素出队
|
||||
var poll_last = deque.pollLast();
|
||||
std.debug.print("\n队尾出队元素 = {},队尾出队后 deque = ", .{poll_last});
|
||||
var pop_last = deque.popLast();
|
||||
std.debug.print("\n队尾出队元素 = {},队尾出队后 deque = ", .{pop_last});
|
||||
inc.PrintUtil.printArray(i32, try deque.toArray());
|
||||
var poll_first = deque.pollFirst();
|
||||
std.debug.print("\n队首出队元素 = {},队首出队后 deque = ", .{poll_first});
|
||||
var pop_first = deque.popFirst();
|
||||
std.debug.print("\n队首出队元素 = {},队首出队后 deque = ", .{pop_first});
|
||||
inc.PrintUtil.printArray(i32, try deque.toArray());
|
||||
|
||||
// 获取双向队列的长度
|
||||
|
@ -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();
|
||||
// 删除头结点
|
||||
self.front = self.front.?.next;
|
||||
@ -111,8 +111,8 @@ pub fn main() !void {
|
||||
std.debug.print("\n队首元素 peek = {}", .{peek});
|
||||
|
||||
// 元素出队
|
||||
var poll = queue.poll();
|
||||
std.debug.print("\n出队元素 poll = {},出队后 queue = ", .{poll});
|
||||
var pop = queue.pop();
|
||||
std.debug.print("\n出队元素 pop = {},出队后 queue = ", .{pop});
|
||||
inc.PrintUtil.printArray(i32, try queue.toArray());
|
||||
|
||||
// 获取队列的长度
|
||||
|
@ -30,8 +30,8 @@ pub fn main() !void {
|
||||
std.debug.print("\n队首元素 peek = {}", .{peek});
|
||||
|
||||
// 元素出队
|
||||
var poll = queue.popFirst().?.data;
|
||||
std.debug.print("\n出队元素 poll = {},出队后 queue = ", .{poll});
|
||||
var pop = queue.popFirst().?.data;
|
||||
std.debug.print("\n出队元素 pop = {},出队后 queue = ", .{pop});
|
||||
inc.PrintUtil.printQueue(i32, queue);
|
||||
|
||||
// 获取队列的长度
|
||||
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
@ -6,16 +6,16 @@
|
||||
|
||||
## 双向队列常用操作
|
||||
|
||||
双向队列的常用操作见下表,方法名需根据语言来确定,此处以 Java 为例。
|
||||
双向队列的常用操作见下表,方法名需根据语言来确定。
|
||||
|
||||
<div class="center-table" markdown>
|
||||
|
||||
| 方法名 | 描述 | 时间复杂度 |
|
||||
| ------------ | ---------------- | ---------- |
|
||||
| ----------- | -------------- | ---------- |
|
||||
| pushFirst() | 将元素添加至队首 | $O(1)$ |
|
||||
| pushLast() | 将元素添加至队尾 | $O(1)$ |
|
||||
| pollFirst() | 删除队首元素 | $O(1)$ |
|
||||
| pollLast() | 删除队尾元素 | $O(1)$ |
|
||||
| popFirst() | 删除队首元素 | $O(1)$ |
|
||||
| popLast() | 删除队尾元素 | $O(1)$ |
|
||||
| peekFirst() | 访问队首元素 | $O(1)$ |
|
||||
| peekLast() | 访问队尾元素 | $O(1)$ |
|
||||
|
||||
@ -41,8 +41,8 @@
|
||||
int peekLast = deque.peekLast(); // 队尾元素
|
||||
|
||||
/* 元素出队 */
|
||||
int pollFirst = deque.pollFirst(); // 队首元素出队
|
||||
int pollLast = deque.pollLast(); // 队尾元素出队
|
||||
int popFirst = deque.pollFirst(); // 队首元素出队
|
||||
int popLast = deque.pollLast(); // 队尾元素出队
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
int size = deque.size();
|
||||
@ -266,9 +266,9 @@
|
||||
let peekLast = deque.last! // 队尾元素
|
||||
|
||||
/* 元素出队 */
|
||||
// 使用 Array 模拟时 pollFirst 的复杂度为 O(n)
|
||||
let pollFirst = deque.removeFirst() // 队首元素出队
|
||||
let pollLast = deque.removeLast() // 队尾元素出队
|
||||
// 使用 Array 模拟时 popFirst 的复杂度为 O(n)
|
||||
let popFirst = deque.removeFirst() // 队首元素出队
|
||||
let popLast = deque.removeLast() // 队尾元素出队
|
||||
|
||||
/* 获取双向队列的长度 */
|
||||
let size = deque.count
|
||||
@ -304,11 +304,11 @@
|
||||
=== "pushFirst()"
|
||||

|
||||
|
||||
=== "pollLast()"
|
||||

|
||||
=== "popLast()"
|
||||

|
||||
|
||||
=== "pollFirst()"
|
||||

|
||||
=== "popFirst()"
|
||||

|
||||
|
||||
以下是具体实现代码。
|
||||
|
||||
@ -403,11 +403,11 @@
|
||||
=== "pushFirst()"
|
||||

|
||||
|
||||
=== "pollLast()"
|
||||

|
||||
=== "popLast()"
|
||||

|
||||
|
||||
=== "pollFirst()"
|
||||

|
||||
=== "popFirst()"
|
||||

|
||||
|
||||
以下是具体实现代码。
|
||||
|
||||
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 61 KiB |
BIN
docs/chapter_stack_and_queue/queue.assets/array_queue_pop.png
Normal file
After Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
@ -8,14 +8,14 @@
|
||||
|
||||
## 队列常用操作
|
||||
|
||||
队列的常用操作见下表,方法名需根据语言来确定,此处以 Java 为例。
|
||||
队列的常用操作见下表。需要注意,不同编程语言的方法名是不同的,在这里我们采用与栈相同的方法命名。
|
||||
|
||||
<div class="center-table" markdown>
|
||||
|
||||
| 方法名 | 描述 | 时间复杂度 |
|
||||
| --------- | -------------------------- | -------- |
|
||||
| push() | 元素入队,即将元素添加至队尾 | $O(1)$ |
|
||||
| poll() | 队首元素出队 | $O(1)$ |
|
||||
| pop() | 队首元素出队 | $O(1)$ |
|
||||
| peek() | 访问队首元素 | $O(1)$ |
|
||||
|
||||
</div>
|
||||
@ -39,7 +39,7 @@
|
||||
int peek = queue.peek();
|
||||
|
||||
/* 元素出队 */
|
||||
int poll = queue.poll();
|
||||
int pop = queue.poll();
|
||||
|
||||
/* 获取队列的长度 */
|
||||
int size = queue.size();
|
||||
@ -120,8 +120,8 @@
|
||||
peek := queue.Front()
|
||||
|
||||
/* 元素出队 */
|
||||
poll := queue.Front()
|
||||
queue.Remove(poll)
|
||||
pop := queue.Front()
|
||||
queue.Remove(pop)
|
||||
|
||||
/* 获取队列的长度 */
|
||||
size := queue.Len()
|
||||
@ -149,7 +149,7 @@
|
||||
|
||||
/* 元素出队 */
|
||||
// 底层是数组,因此 shift() 方法的时间复杂度为 O(n)
|
||||
const poll = queue.shift();
|
||||
const pop = queue.shift();
|
||||
|
||||
/* 获取队列的长度 */
|
||||
const size = queue.length;
|
||||
@ -177,7 +177,7 @@
|
||||
|
||||
/* 元素出队 */
|
||||
// 底层是数组,因此 shift() 方法的时间复杂度为 O(n)
|
||||
const poll = queue.shift();
|
||||
const pop = queue.shift();
|
||||
|
||||
/* 获取队列的长度 */
|
||||
const size = queue.length;
|
||||
@ -209,7 +209,7 @@
|
||||
int peek = queue.Peek();
|
||||
|
||||
/* 元素出队 */
|
||||
int poll = queue.Dequeue();
|
||||
int pop = queue.Dequeue();
|
||||
|
||||
/* 获取队列的长度 */
|
||||
int size = queue.Count();
|
||||
@ -236,7 +236,7 @@
|
||||
let peek = queue.first!
|
||||
|
||||
/* 元素出队 */
|
||||
// 使用 Array 模拟时 poll 的复杂度为 O(n)
|
||||
// 由于是数组,因此 removeFirst 的复杂度为 O(n)
|
||||
let pool = queue.removeFirst()
|
||||
|
||||
/* 获取队列的长度 */
|
||||
@ -266,8 +266,8 @@
|
||||
=== "push()"
|
||||

|
||||
|
||||
=== "poll()"
|
||||

|
||||
=== "pop()"
|
||||

|
||||
|
||||
以下是使用链表实现队列的示例代码。
|
||||
|
||||
@ -350,8 +350,8 @@
|
||||
=== "push()"
|
||||

|
||||
|
||||
=== "poll()"
|
||||

|
||||
=== "pop()"
|
||||

|
||||
|
||||
细心的同学可能会发现一个问题:在不断入队与出队的过程中,`front` 和 `rear` 都在向右移动,**在到达数组尾部后就无法继续移动了**。为解决此问题,**我们考虑将数组看作是首尾相接的**,这样的数组被称为「环形数组」。
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
## 栈常用操作
|
||||
|
||||
栈的常用操作见下表,方法名需根据语言来确定,此处以 Java 为例。
|
||||
栈的常用操作见下表,方法名需根据编程语言来确定,此处我们以常见的 `push` , `pop` , `peek` 为例。
|
||||
|
||||
<div class="center-table" markdown>
|
||||
|
||||
|