#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef int QElemType;
/*typedef struct QNode{
QElemType data;
struct QNode *next;
}QNode,* QueuePtr
typedef struct{
QueuePtr front; //队头指针
QueeuPtr rear; //队尾指针
}LinkQueue;*/
typedef struct{
QElemType elem[10];
int front,rear;
}SqQueue;
//队列初始化
Status InitQueue(SqQueue &Q){
Q.front = 0;
Q.rear = 0;
return OK;//表示执行成功
}
//判断队列是否为空,如果空返回Ture,否则返回False
Status B(SqQueue Q){
if (Q.front == Q.rear)
return TRUE;
else
return FALSE;
}
//插入
Status EnQueue(SqQueue &Q,QElemType e){
if((Q.rear + 1) % 10 == Q.front)
exit(OVERFLOW);
/*p = (QueuePtr)malloc(sizeof(QNode));
if(!p) exit(OVERFLOW);*/
Q.elem[Q.rear] = e;
Q.rear = (Q.rear + 1) % 10;
}
//删除
Status D(SqQueue &Q,QElemType &e){
if(Q.front == Q.rear)
exit(OVERFLOW);
e = Q.elem[Q.front];
Q.front = (Q.front + 1) % 10;
return OK;
}
//获取队头元素
Status GetFront(SqQueue &Q,QElemType &e ){
if (B(Q))
return OVERFLOW;
e = Q.elem[Q.front];
return OK;
}
int main() {
SqQueue myQueue;
InitQueue(myQueue);
EnQueue(myQueue,11);
EnQueue(myQueue,12);
EnQueue(myQueue,13);
EnQueue(myQueue,14);
EnQueue(myQueue,15);
int eee;
D(myQueue,eee);
printf("删除的元素为%d",eee);
GetFront(myQueue,eee);
printf("\n啊哈哈哈%d",eee);
}
循环队列的操作11.30(数据结构)
最新推荐文章于 2024-07-13 22:00:00 发布