编写一个程序,实现链队列的各种基本运算, (MAXQSIZE=5),并在此基础上设计一个主程序完成如下功能: (1)初始化队列 q; (2)判断队列 q 是否为空; (3)依次进队列元素 1,12,-10; (4)出队一个元素,并输出该元素; (5)输出队列的长度(元素个数); (6)依次进队元素 13,-12,10; (7)输出队列长度; (8)输出出队序列
时间: 2023-06-17 16:03:52 浏览: 120
链队列基本运算的程序如下:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXQSIZE 5
typedef int QElemType;
typedef struct QNode {
QElemType data;
struct QNode *next;
} QNode, *QueuePtr;
typedef struct {
QueuePtr front;
QueuePtr rear;
} LinkQueue;
// 初始化队列
void InitQueue(LinkQueue *q) {
q->front = q->rear = (QueuePtr) malloc(sizeof(QNode));
q->front->next = NULL;
}
// 判断队列是否为空
int QueueEmpty(LinkQueue q) {
return q.front == q.rear;
}
// 进队列
void EnQueue(LinkQueue *q, QElemType e) {
QueuePtr p = (QueuePtr) malloc(sizeof(QNode));
p->data = e;
p->next = NULL;
q->rear->next = p;
q->rear = p;
}
// 出队列
int DeQueue(LinkQueue *q, QElemType *e) {
if (q->front == q->rear) {
return 0;
}
QueuePtr p = q->front->next;
*e = p->data;
q->front->next = p->next;
if (q->rear == p) {
q->rear = q->front;
}
free(p);
return 1;
}
// 队列长度
int QueueLength(LinkQueue q) {
int len = 0;
QueuePtr p = q.front->next;
while (p) {
len++;
p = p->next;
}
return len;
}
// 输出队列
void PrintQueue(LinkQueue q) {
QueuePtr p = q.front->next;
while (p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
LinkQueue q;
InitQueue(&q);
printf("初始化队列后,队列长度为:%d\n", QueueLength(q));
printf("队列是否为空:%d\n", QueueEmpty(q));
EnQueue(&q, 1);
EnQueue(&q, 12);
EnQueue(&q, -10);
printf("依次进队列元素 1,12,-10 后,队列长度为:%d\n", QueueLength(q));
printf("队列是否为空:%d\n", QueueEmpty(q));
printf("队列元素为:");
PrintQueue(q);
QElemType e;
DeQueue(&q, &e);
printf("出队元素为:%d\n", e);
printf("出队一个元素后,队列长度为:%d\n", QueueLength(q));
printf("队列元素为:");
PrintQueue(q);
EnQueue(&q, 13);
EnQueue(&q, -12);
EnQueue(&q, 10);
printf("依次进队列元素 13,-12,10 后,队列长度为:%d\n", QueueLength(q));
printf("队列元素为:");
PrintQueue(q);
printf("出队序列为:");
while (DeQueue(&q, &e)) {
printf("%d ", e);
}
printf("\n");
printf("出队所有元素后,队列长度为:%d\n", QueueLength(q));
printf("队列是否为空:%d\n", QueueEmpty(q));
return 0;
}
```
运行结果:
```
初始化队列后,队列长度为:0
队列是否为空:1
依次进队列元素 1,12,-10 后,队列长度为:3
队列是否为空:0
队列元素为:1 12 -10
出队元素为:1
出队一个元素后,队列长度为:2
队列元素为:12 -10
依次进队列元素 13,-12,10 后,队列长度为:5
队列元素为:12 -10 13 -12 10
出队序列为:12 -10 13 -12 10
出队所有元素后,队列长度为:0
队列是否为空:1
```
阅读全文