【代码随想录】栈和队列1

栈的基本操作 

InitStack(&S):初始化空栈
StackEmpty(S):判断栈是否为空
Push(&S, x):进栈,若栈未满,就将x加入成为新栈顶
Pop(&S, &x):出栈,若栈非空,就弹出栈顶元素
GetTop(S, &x):读取栈顶元素,若栈非空,就用x返回栈顶元素
DestroyStack(&S):栈销毁,释放栈占用的存储空间

ps:

  • top()是取栈顶元素,不会删除里面的元素,返回栈顶的引用;
  • pop()是删除栈顶元素,返回void。

队列的基本操作

InitQueue(&Q):初始化一个空队列
QueueEmpty(Q):判队列是否为空
EnQueue(&Q, x):入队,若队列未满,就将x加入成为新的队尾
DeQueue(&Q, &x):出队,若队列非空,就删除队头元素用x返回
GetHead(Q, &x):读队列头元素,若队列非空,就将队头元素赋值给x

练习:

题目:

用队列实现栈

分析:

主要就是pop操作不容易,这里可以每次弹出的时候用第二个队列存着除最后一个数据之外的数据,然后删除了再移回来

int pop() {
        int size = que1.size();
        size--;
        while (size--) {
            que2.push(que1.front());
            que1.pop();
        }
        int result = que1.front(); 
        que1.pop();
        que1 = que2;            
        while (!que2.empty()) { 
            que2.pop();
        }
        return result;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值