队列基本操作实现---顺序结构

队列正如其名,是一个先入先出的逻辑结构,正如排队一样,排到队尾,从对头离开。这里用到队头、队尾指针。队列和指针十分相似,都是对于输入输出端进行限制的结构,难怪他俩搁在一章。

发现在入队的时候存在一些缺点,空间利用不充分,队尾指针后移造成前面分配空间不可用。

函数列表

void DestroyQueue(SqQueue * s);//销毁队列
bool EmptyQueue(SqQueue * s);//判空
bool enQueue(SqQueue *s,ElemType e);//入队操作
bool dlQueue(SqQueue *s,ElemType e);//出队操作

1.头文件

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define MaxSize 50
typedef char ElemType;

2.初始化

typedef struct {
    ElemType data[MaxSize];
   int front,rear;
}SqQueue;

SqQueue *q;
    q = (SqQueue * ) malloc(sizeof(SqQueue));
    q -> front = q -> rear = -1;

3.销毁队列

void DestroyQueue(SqQueue * s) {
    free(s);
    printf("销毁成功\n");
}

4.判空

bool EmptyQueue(SqQueue * s){
    if(s -> front == s -> rear){
        printf("队列为空\n");
        return false;
    } else{
        printf("队列不为空\n");
        return true;
    }
}

5.入队

bool enQueue(SqQueue *s,ElemType e){
    if(s -> rear == MaxSize - 1){
        printf("队列上溢出\n");
        return false;
    }
    s -> rear++;
    s -> data[s -> rear] = e;
    printf("入队成功\n");
    return true;
}

6.出队

bool dlQueue(SqQueue *s,ElemType e){
    if(s -> front == s -> rear){
        printf("队列空下溢出\n");
        return false;
    }
    s -> front++;
    e = s -> data[s -> front];
    printf("%c出队成功\n",e);
    return true;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值