数据结构 (极速版)

用两栈实现一个队列的操作:(队列操作包括出队,入队)

分文件编写代码:

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include"stack.h"
void init_stack(stack* st,int len)
{
    st->stk=(int*)malloc(sizeof(int)*len);
    assert(st->stk!=NULL);
    st->len=len;
    st->count=0;
}

bool isfull_stack(const stack* st)
{
    return st->count==st->len?true:false;
}

bool isempty_stack(const stack* st)
{
    return st->count==0?true:false;
}

bool push_stack(stack* st,int x)
{
    if(isfull_stack(st))
    {
        printf("\n栈空间已满\n");
        return false;
    }
    st->stk[st->count]=x;
    st->count++;
    return true;
}

bool pop_stack(stack* st,int* x)
{
    if(isempty_stack(st))
    {
        *x=0;
        printf("\n栈是空的\n");
        return false;
    }
    if(NULL!=x)
    {
        *x=st->stk[st->count-1];
    }
  
    st->count--;
    return true;
}
#include<stdio.h>
#include"queue.h"
int main()
{
    queue qe;
    int x;
    init_queue(&qe,5);
    push_queue(&qe,1);
    push_queue(&qe,2);
    push_queue(&qe,3);
    push_queue(&qe,4);
    push_queue(&qe,5);
    push_queue(&qe,6);
    pop_queue(&qe,&x);
    printf("%d  ",x);
    pop_queue(&qe,&x);
    printf("%d  ",x);
    pop_queue(&qe,&x);
    printf("%d  ",x);
    pop_queue(&qe,&x);
    printf("%d  ",x);
    pop_queue(&qe,&x);
    printf("%d  ",x);
    pop_queue(&qe,&x);
    printf("%d  ",x);
    printf("\n");

}

思路:

注意栈和队列的区别:

        栈:先进后出,后进先出;

        队列:先进先出,后进后出

所以只要再main函数中,对栈进行两次操作即可,先出栈以后保存至另一个栈,再从新的栈中出栈,就实现了队列的操作。

2.链表操作注意:

链表操作重点是插入,删除,修改,排序,查找。功能实现有所重叠,可以嵌套调用函数。

但是要考虑头插,中间插入,尾部插入,头部删除,中间删除,尾部删除等各种情况,记得入参检查,否则段错误乱报奥。

没咯。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值