线性表相关

线性表

一. vector数组

1.1定义

vector又称可变长数组,定义在 < vector> 头文件中,vector容器是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新的元素。因此vector的运用对于内存的合理利用与运用的灵活性有很大的帮助。

1.2实现方式

定义方式以及常用的内置函数如下:

vector<int> v;  // 定义一个vector,其中的元素为int类型
vector<int> v[N];  // 定义一个vector数组,其中有N个vector
vector<int> v(len);  // 定义一个长度为len的vector

v.push_back(x);  // 在vector的尾部插入元素x
v.pop_back();  // 删除vector的最后一个元素)
v.size();  // 返回vector中元素的个数
v.empty();  // 返回vector是否为空,若为空则返回true否则返回false
v.front();  // 返回vector中的第一个元素
v.back();  // 返回vector中的最后一个元素
v.begin();  // 返回vector第一个元素的迭代器
v.end();  // 返回vector最后一个元素后一个位置的迭代器
v.clear();  // 清空vector
v.erase(v.begin());  // 删除迭代器it所指向的元素,即删除第一个元素
 

二. 栈

2.1 定义

stack又称栈,是一种后进先出的数据结构,定义在头文件中,stack不允许有遍历行为,除了最顶端以外,没有任何方法可以存取stack的其它元素。
在这里插入图片描述

2.2 实现方式

2.2.1 数组模拟
int stack[MAXN]; // 开辟栈需要的数组空间
int p = 0; // 栈顶指针,指向下一个待插入的数组位置
void push(int x) // 压栈,需要判断栈是否溢出
{
	if(p >= MAXN)
		ptintf("Stack overflow !");
	else 
		stack[p] = x;
		p += 1;
}

void pop() // 弹出栈顶元素
{
	if(p == 0) // 需要判断栈是否为空
		printf("Stack is empty.");
	else 
		p -= 1;
}

int top() // 查询栈顶元素
{	
	if(p == 0) // 需要判断栈是否为空
	{
		printf("Stack is empty.");
		return -1;
	}
	else 
		return stack[p-1]; // 返回栈顶元素
}
2.2.2 STL
stack<int> s;  // 定义一个stack,其中元素的类型为int
stack<int> s[N];  // 定义一个stack数组,其中有N个stack
s.push(x);  // 在stack中插入元素x
s.pop();  // 弹出stack的栈顶元素
s.top();  // 返回stack的栈顶元素
s.size();  // 返回stack中元素的个数
s.empty();  // 返回stack是否为空,若为空则返回true否则返回false

三. 队列

3.1 定义

queue又称队列,是一种先进先出的数据结构,定义在头文件中,queue容器允许从一端(称为队尾)新增元素(入队),从另一端(称为队头)移除元素(出队)。
在这里插入图片描述

3.2 实现方式

3.2.1 数组模拟
int queue[MAXN];
int head = 0;
int tail = 0;
void push(int x)
{
	if(tail >= MAXN)
		printf("Queue overflow");
	else
		queue[tail] = x;
		tail += 1;
}

void pop()
{
	if(head == tail)
		printf("Queue is empty");
	else 
		head += 1;
}

int front()
{
	if(head == tail)
	{
		printf("queue is empty");
		return -1;
	}
	else 
		return queue[head];
}
3.2.2 STL
queue<int> que;  // 定义一个queue,其中元素的类型为int
queue<int> que[N];  // 定义一个queue数组,其中有N个queue

que.push(x);  // 在queue的队尾插入元素x
que.pop();  // 出队queue的队头元素
que.front();  // 返回queue的队头元素
que.back();  // 返回queue的队尾元素
que.size();  // 返回queue中元素的个数
que.empty();  // 返回queue是否为空,若为空则返回true否则返回false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值