考研复试机试--数据结构

向量
#include
vector
长度不定的数组
时间:越长越好
空间:越少越好

进行一次插入:O(n)
进行n次插入:O(n^2)

C++中数组溢出会自动成倍扩容

vector的使用,即向量的构造

int myArray[] = { 1, 2, 3, 4, 5 };

	vector<int> myVector1;

	vector<int> myVector2(myArray, myArray + 5);   //1 2 3 4 5 

	vector<int> myVector3(5, 2);            //2 2 2 2 2 

	vector<int> myVector4(myVector2);       //1 2 3 4 5 

	vector<int> myVector5(myVector4.begin(), myVector4.end());//1,2,3 ,4,5

	//只能一个一个输出
	cout << myVector5[2];

vector的常用操作

int myArray[] = { 1, 2, 3, 4, 5 };
	//定义myVector
	vector<int> myVector(myArray, myArray + 5);  //1 2 3 4 5 
	//计算长度
	int n = myVector.size();  //n=5
	//和栈类似,pop,push 先入后出,使用的都是pop和push
	myVector.pop_back();     //1 2 3 4

	myVector.push_back(6);   //1 2 3 4 6
	//插入操作
	//插入位置,插入数字
	myVector.insert(myVector.begin() + 1, 9);   //1 9 2 3 4 6
	//插入位置,插入3个7
	myVector.insert(myVector.begin(), 3, 7);    //7 7 7 1 9 2 3 4 6
	//插入位置,插入数组从哪插到哪
	myVector.insert(myVector.begin(), myArray, myArray + 2);//1 2 7 7 7 1 9 2 3 4 6 
	//删除操作
	//删除位置
	myVector.erase(myVector.begin() + 6);//1 2 7 7 7 1 2 3 4 6 
	//删除起始位置,末尾位置
	myVector.erase(myVector.begin() + 1, myVector.begin() + 3);//1 7 7 1 2 3 4 6 
	//全部删除用clear()
	myVector.clear();

队列
#include
queue
队尾插入,对头删除 先入先出
入队 出队 判空 访问队首

queue<int> myQueue;
	int sum = 0;
	for (int i = 0; i < 10; i++)
	{
		myQueue.push(i);   //入队
	}

	while (!myQueue.empty())
	{
		sum = sum + myQueue.front();//访问队首
		myQueue.pop();        //出队
	}
	printf("%d\n", sum);


#include
stack
后入先出
入栈 出栈 判空 访问栈顶

stack<int> myStack;

	for (int i = 0; i < 10; i++)
	{
		myStack.push(i);
	}

	int sum = 0;
	while (!myStack.empty())
	{
		printf("%d", myStack.top());
		sum += myStack.top();
		myStack.pop();
	}

	printf("\n%d\n", sum);

1.逆序输出
2.括号匹配
栈中的括号都是左括号,见到右括号之后就出栈
3.表达式求值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值