#CSPJDSR06. CSP-J 数据结构|R06 综合检测

CSP-J 数据结构|R06 综合检测

CSP-J 数据结构|R06 综合检测

训练重点: 结构体、指针、链表、栈、队列、循环队列、STL 容器与表达式综合

每题只有一个正确选项。建议按 CSP 初赛方式独立完成,程序阅读题必须在草稿纸上逐步模拟。

第 1 题

已知 Node *p 指向一个结点,要访问该结点成员 data,正确写法是( )。

{{ select(1) }}

  • p.data
  • p->data
  • *p.data
  • &p.data

第 2 题

链表 10 -> 20 -> 30 中,pre 指向 10,p 指向 20。执行 pre->next=p->next; delete p; 后链表变为( )。

{{ select(2) }}

  • 10 -> 20
  • 10 -> 30
  • 20 -> 30
  • 只剩 30

第 3 题

执行下面代码后输出为( )。

stack<int> s;
s.push(1);
s.push(4);
s.push(7);
s.pop();
cout << s.top();

{{ select(3) }}

  • 1
  • 4
  • 7
  • 无法确定

第 4 题

执行下面代码后输出为( )。

queue<int> q;
q.push(2); q.push(6); q.push(9);
q.pop();
cout << q.front() << " " << q.back();

{{ select(4) }}

  • 2 9
  • 6 9
  • 6 6
  • 9 6

第 5 题

循环队列数组长度为 N,采用“空出一个位置”的方式。下列哪个条件表示队满?

{{ select(5) }}

  • front==rear
  • (rear+1)%N==front
  • rear==N
  • front==0

第 6 题

执行下面代码后,s.size() 为( )。

set<int> s={2,5};
s.insert(5);
s.insert(1);
s.erase(2);

{{ select(6) }}

  • 1
  • 2
  • 3
  • 4

第 7 题

执行下面代码后,mp.size() 为( )。

map<int,int> mp;
mp[3]++;
mp[3]++;
mp[5];

{{ select(7) }}

  • 1
  • 2
  • 3
  • 5

第 8 题

执行下面代码后,a[1] 为( )。

vector<int> a={4,1,3};
sort(a.begin(),a.end());

{{ select(8) }}

  • 1
  • 3
  • 4
  • 下标越界

第 9 题

中缀表达式 a*(b+c) 对应的后缀表达式是( )。

{{ select(9) }}

  • ab*c+
  • abc+*
  • ab+c*
  • *a+bc

第 10 题

下面程序最终输出是( )。

stack<int> s;
queue<int> q;
for(int i=1;i<=4;i++) s.push(i);
while(!s.empty()){ q.push(s.top()); s.pop(); }
while(!q.empty()){ cout << q.front() << " "; q.pop(); }

{{ select(10) }}

  • 1 2 3 4
  • 4 3 2 1
  • 1 4 2 3
  • 4 1 3 2

作答要求

  • 栈题:画清 栈底 / 栈顶。
  • 队列题:标清 队首 / 队尾。
  • 循环队列:每次移动都写出取模后的下标。
  • 链表题:逐句修改 next 箭头,不要只靠心算。
  • STL 题:特别注意函数是否会改变容器内容。