//循环队列
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#define MAXSIZE 100
typedef int DataType;
typedef struct {
DataType data[MAXSIZE];
int front;
int rear;
}SeQueue;
void InitQueue(SeQueue* Q) {
Q->front =Q->rear=0;
}
int EmptyQueue(SeQueue* Q) {
if (Q->front == Q->rear) {
return 1;
}
else
return 0;
}
int EnQueue(SeQueue* Q, DataType x) {
if ((Q->rear+1)%MAXSIZE==Q->front) {
printf("队满,不能入队!");
return 0;
}
else {
Q->rear++;
Q->data[Q->rear] = x;
return 1;
}
}
void ShowQueue(SeQueue* Q) {
int p = Q->front;
if ( p== Q->rear) {
printf("\n队为空");
}
else {
printf("\n从队头起队列的每个元素:");
while (p!= Q->rear) {
printf("%5d", Q->data[p + 1]);
p++;
}
}
}
int DeQueue(SeQueue* Q, DataType * x) {
if (EmptyQueue(Q)) {
printf("队空,不能出队!");
return 0;
}
else {
Q->front++;
*x = Q->data[Q->front];
return 1;
}
}
int GetQueue(SeQueue* Q,DataType *x) {
if (EmptyQueue(Q)) {
printf("队空,没有队头!");
return 0;
}
else {
*x = Q->data[(Q->front + 1) % MAXSIZE];
return 1;
}
}
int main() {
SeQueue Q;
DataType x;
int i,n,flay=0;
InitQueue(&Q);//初始化
EmptyQueue(&Q);//判断队为不为空
printf("请输人要入队的个数:");
scanf("%d", &n);
printf("请输入%d个整数:", n);
for (i = 0; i < n; i++) {
scanf("%d", &x);
flay=EnQueue(&Q, x);//入队
}
if (flay == 1)
printf("入队成功!");
else
printf("入队失败!");
ShowQueue(&Q);//输出每个元素
printf("\n请输入要出队的元素个数:");
scanf("%d",&n);
printf("出队的元素依次为:");
for (i = 0; i < n; i++) {
flay=DeQueue(&Q, &x);//出队
printf("%5d", x);
}
if (flay == 1)
printf("\n出队成功!");
else
printf("\n出队失败!");
ShowQueue(&Q);
GetQueue(&Q,&x);//取队头
printf("\n队头元素为:%d", x);
}
循环链表的具体操作
最新推荐文章于 2024-08-31 15:34:19 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)