#GOBJ606L. GESP 6级客观题|栈、队列与循环队列|课堂讲解
GESP 6级客观题|栈、队列与循环队列|课堂讲解
GESP 6级客观题|栈、队列与循环队列|课堂讲解
考试频率:高频。本卷共 2 题。
- 以下关于栈和队列的代码,执行后输出是( )。
stack<int> s;
queue<int> q;
for (int i = 1; i <= 3; ++i) {
s.push(i);
q.push(i);
}
cout << s.top() << " " << q.front() << endl;
{{ select(1) }}
- 1 3
- 3 1
- 3 3
- 1 1
-
下面定义了一个循环队列的类,请补全判断队列是否满的函数,横向上应填写( )。
#include <iostream> using namespace std; class circular_queue { private: int *arr; // 数组用于存储队列元素 int capacity; // 队列容量 int front; // 队头指针 int rear; // 队尾指针 public: circular_queue(int size) { capacity = size + 1; // 为了避免队列满时与队列空时指针相等的情况,多预留一个空间 arr = new int[capacity]; front = 0; rear = 0; } ~circular_queue() { delete[] arr; } bool is_empty() { return front == rear; } bool is_full() { ________________ // 在此处填入代码 } void en_queue(int data) { if (is_full()) { cout << "队列已满,无法入队!" << endl; return -1; } arr[rear] = data; rear = (rear + 1) % capacity; return 1; } int de_queue() { if (is_empty()) { cout << "队列为空,无法出队!" << endl; return -1; // 出队失败,返回一个特殊值 } int data = arr[front]; front = (front + 1) % capacity; return data; } }; {{ select(2) }}
return (rear + 1) % capacity == front;return rear % capacity == front;return rear == front;return (rear + 1) == front;