环形队列的基本运算实现


#include <stdio.h>
#include <malloc.h>
#define MaxSize 100
typedef char ElemType;
typedef struct
{
    ElemType data[MaxSize];
    int top;                    //栈指针
}SqStack;
void IniStack(SqStack *&s)      //初始化
{
    s=(SqStack *)malloc(sizeof(SqStack));
    s->top=-1;
}
void DestoryStack(SqStack *&s)
{
    free(s);
}
bool StackEmpty(SqStack *s)    //判断是否为空
{
    return (s->top==-1);
}
bool Push(SqStack *&s,ElemType e)
{
    if(s->top==MaxSize-1)       //栈满
        return false ;
    s->top++;
    s->data[s->top]=e;
    return true;
}
bool Pop(SqStack *s,ElemType e)
{
    if(s->top==-1)        //栈空
        return false;
    e=s->data[s->top];
    return true;
}
int main()
{
    ElemType e;
    SqStack *q;
    printf("环形队列基本运算如下:\n");
    printf("(1)初始化队列q\n");
    IniStack(q);
    printf("(2)依次进队列元素a,b,c\n");
    if(!Push(q,'a'))
        printf("\t提示:队满,不能进队\n");
    if(!Push(q,'b'))
        printf("\t提示:队满,不能进队\n");
    if(!Push(q,'c'))
        printf("\t提示:队满,不能进队\n");
    printf("(3)队列为%s\n",(StackEmpty(q)?"空":"非空"));
    if(Pop(q,e)==0)
        printf("队空,不能出队\n");
    else
        printf("(4)出队一个元素%c\n",e);
    printf("(5)依次进队列元素d,e,f\n");
    if(!Push(q,'d'))
        printf("\t提示:队满,不能进队\n");
    if(!Push(q,'e'))
        printf("\t提示:队满,不能进队\n");
    if(!Push(q,'f'))
        printf("\t提示:队满,不能进队\n");
    printf("(6)出队序列\n");
    while (!StackEmpty(q))
    {
        Pop(q,e);
        printf("%c",e);
    }
    printf("\n");
    printf("(7)释放队列\n");
    DestoryStack(q);
    return 0;
}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值