#GOBJ606L. GESP 6级客观题|栈、队列与循环队列|课堂讲解

GESP 6级客观题|栈、队列与循环队列|课堂讲解

GESP 6级客观题|栈、队列与循环队列|课堂讲解

考试频率:高频。本卷共 2 题。

  1. 以下关于栈和队列的代码,执行后输出是( )。
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
  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;
蜀ICP备2025119001号-1