严蔚敏数据结构队列代码
时间: 2023-08-26 09:07:19 浏览: 115
严蔚敏的数据结构代码
以下是严蔚敏老师所著《数据结构》中队列的代码实现(C语言):
```c
#define MAXQSIZE 100 // 最大队列长度
typedef int QElemType; // 队列元素类型
typedef struct{
QElemType *base; // 初始化的动态分配存储空间
int front; // 头指针,若队列不空,指向队列头元素
int rear; // 尾指针,若队列不空,指向队列尾元素的下一个位置
}SqQueue;
// 初始化队列
Status InitQueue(SqQueue &Q){
Q.base = (QElemType*)malloc(MAXQSIZE * sizeof(QElemType));
if(!Q.base) exit(OVERFLOW); // 存储分配失败
Q.front = Q.rear = 0; // 队头、队尾指针置为0
return OK;
}
// 销毁队列
Status DestroyQueue(SqQueue &Q){
free(Q.base);
Q.base = NULL; // 防止产生“野指针”
Q.front = Q.rear = 0;
return OK;
}
// 清空队列
Status ClearQueue(SqQueue &Q){
Q.front = Q.rear = 0;
return OK;
}
// 判断队列是否为空
Status QueueEmpty(SqQueue Q){
if(Q.front == Q.rear) return TRUE;
else return FALSE;
}
// 队列长度
int QueueLength(SqQueue Q){
return (Q.rear - Q.front + MAXQSIZE) % MAXQSIZE;
}
// 获取队头元素
Status GetHead(SqQueue Q, QElemType &e){
if(Q.front == Q.rear) return ERROR; // 队列为空
e = Q.base[Q.front];
return OK;
}
// 入队
Status EnQueue(SqQueue &Q, QElemType e){
if((Q.rear + 1) % MAXQSIZE == Q.front) return ERROR; // 队列满
Q.base[Q.rear] = e;
Q.rear = (Q.rear + 1) % MAXQSIZE;
return OK;
}
// 出队
Status DeQueue(SqQueue &Q, QElemType &e){
if(Q.front == Q.rear) return ERROR; // 队列为空
e = Q.base[Q.front];
Q.front = (Q.front + 1) % MAXQSIZE;
return OK;
}
```
以上就是严蔚敏老师所著《数据结构》中队列的代码实现,希望能对你有所帮助。
阅读全文