【Nan's 王道机试指南学习笔记】第五章 数据结构一
5.1 向量
重点提醒
数组存在确定其大小的限制, 向量——变长数组。
线性序列容器,使用连续的空间存储元素,可用下标来访问,只是大小动态变化!
STL-vector
#include
对尾部:push_back()/pop_back()
insert()/erase()/clear()
end()返回尾元素的后一个位置!!
题目练习
例题5.1 完数与盈数(清华复试)
牛客网网址:https://www.nowcoder.com/questionTerminal/df0d850e41894d06a165bf445ec8a8b4
AC的格式稍有点怪 其实没难度
#include <iostream>
#include <vector>
using namespace std;
vector<int> numE;
vector<int> numG;
int Sum(int x){
int sum = 0;
for(int i = 1;i<x;i++){
if(x%i==0) //是因子
sum +=i;
}
return sum;
}
int main(){
for(int i=2;i<=60;i++){
if(i==Sum(i)) numE.push_back(i);
else if(i<Sum(i)) numG.push_back(i);
}
cout<<"E:";
for(int i = 0;i< numE.size();i++){
cout<<" "<<numE[i];
}
cout<<" G:";
for(int i = 0;i< numG.size();i++){
cout<<" "<<numG[i];
}
cout<<endl;
return 0;
}
5.2 队列
重点提醒
从搜索的起点开始,不断地优先访问当前结点的邻居
队列是一种线性的序列结构,其存放的元素按照线性的逻辑次序排列。与数组/向量相比,队列只限于逻辑两端的操作。
“先进先出”规则!
STL-queue
基本操作
empty()/size() push()/pop() front()/back()
题目练习
例题5.2 约瑟夫问题No.2
约瑟夫问题数据规模不大时,可直接用循环队列模拟。
可以把模板队列queue的队首元素弹出后,再压入尾部,模拟循环队列效果。
#include <iostream>
#include <cstdio&g