顺序队列管理

队列顺序存储用链表来表示,用front指针表示队首,用rear指针表示队尾,实现队列的几个基本的操作。

#include <stdio.h>

#include<stdlib.h>

#define MAXSIZE 100

typedef int datatype;

typedef struct

{

datatype a[MAXSIZE];

int front;

int rear;

}sequence_queue;

void init(sequence_queue *sq)

{

sq->front=0;

sq->rear=0;

}

bool empty(sequence_queue *sq)

{

if(sq->front==0&&sq->rear==0)

return true;

return false;

}

bool full(sequence_queue *sq)

{

//判断队列是否为满

if(sq->rear==MAXSIZE)

return true;

return false;//满返回true,空返回false

}

void display(sequence_queue *sq)

{

int i;

if(sq->front==0&&sq->rear==0)

printf("\n队列是空的");

else

for(i=sq->front;i<sq->rear;i++)

printf("%3d",sq->a[i]);

}

datatype dequeue(sequence_queue *sq)

{

//出队

if(sq->front==sq->rear)

{

printf("队列为空,无法出队");

return 0;

}

datatype x;

x=sq->a[sq->front];

sq->front++;

return x;

}

void insertqueue(sequence_queue *sq,datatype x)

{

if(sq->rear==MAXSIZE)

{

printf("队列已满,无法插入");exit(1);

}

sq->a[sq->rear]=x;

sq->rear++;

}

void clearqueue(sequence_queue *sq)

{

sq->front=sq->rear=0;

}

int main()

{

datatype x;

sequence_queue* sq = (sequence_queue*)malloc(sizeof(sequence_queue));

init(sq);

int n;

printf("请输入需要创建队列的个数:");

scanf("%d", &n);

for(int i = 1; i <= n; ++ i)

{

printf("请输入需要插入的值:");

scanf("%d", &x);

insertqueue(sq, x);

}

bool flag;

do

{

printf("是否进行出队操作(1: 是, 0: 否):");

scanf("%d", &flag);

if(flag)

{

x = dequeue(sq);

printf("出队的元素为: %d\n", x);

//display(sq);

}

    display(sq);

}while(flag);

do

{

printf("是否进行插入操作(1: 是, 0: 否):");

scanf("%d", &flag);

if(flag)

{

printf("请输入需要插入的值:");

    scanf("%d", &x);

    insertqueue(sq, x);

     

}

display(sq);

}while(flag);

clearqueue(sq);

return 0;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值