顺序队的入队声明 主要行为 代码实现 补充行为 代码实现 | status queueinsert (sqqueue *pq,int e) 队尾插入元素 rear+1 pq->data[pq->rear]=e; pq->rear=(pq->rear+1)%(MAXSIZE); // 加% 是为了循环 数组满报错
// 这个表达式背掉即可 if((pq->rear+1)%MAXSIZE ==pq->front) return ERROR; |
顺序队的出队声明 主要行为 行为代码 补充行为 行为代码 | status queuedelete (sqqueue *pq,int* pe) 用pe保存front元素 front向后一位 *pe=pq->data[pq->front];
pq->front=(pq->front+1)%MAXSIZE; 队列空报错 if(pq->front==pq->rear) return ERROR;
|
代码汇总:
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include <string.h>
//-----------------------------
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int status;
#define MAXSIZE 20
//-----------------------------
typedef struct sqqueue
{
int data[MAXSIZE];
int front;
int rear;
}sqqueue;
status queueinsert (sqqueue *pq,int e)
{
// 这个表达式背掉即可
if((pq->rear+1)%MAXSIZE ==pq->front)
return ERROR;
pq->data[pq->rear]=e;
pq->rear=(pq->rear+1)%(MAXSIZE);
// 加% 是为了循环
}
status queuedelete (sqqueue *pq,int* pe)
{
if(pq->front==pq->rear)
return ERROR;
*pe=pq->data[pq->front];
pq->front=(pq->front+1)%MAXSIZE;
}
void test()
{
}
int main()
{
test();
system("pause");
return 0;
}