如何用数组实现队列和栈?

【栈】
栈的特性是先进后出。
pop:把栈顶元素弹出栈
push:把元素压入栈
peek:得到栈顶元素的值

/*
首先建立一个N大小的数组arr[N],表示这个栈最多有N个元素
用size表示栈中元素的个数,初始size = 0,且表示下一个压栈元素的位置
*/
void push(int num){
	if(size >= N ){
		cout << "栈满" << endl;
		return;
	}
	arr[size++] = num;
}

int pop(){
	if(size == 0){
		cout << "栈空" << endl;
		return;
	}
	return arr[--size];
	//peek就改成 return arr[size-1];
}

【队列】
队列的特性是先进先出
依旧是建立一个数组,N代表容量, size代表当前元素个数
不同的是,压入队列和弹出队列用不同的指针来指向,这里用end表示下一个压入队列的元素位置,begin表示弹出队列的位置,用size约束end和begin,如果size为0,则begin失效,如果size=N,则end失效;end和begin之间互不影响。如果end指向N且size!=N,则循环end,指向最开始的位置、begin一样
(begin转圈追end都追不上)

void enq(int num){
	if(size==N)	return;
	end %= N;
	arr[end++] = num;
	size++;
}
int deq(){
	if(size==0)	return;
	begin %= N;
	size--;
	return arr[begin++];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值