(1)编写链接队列的基本操作函数。 ①进队操作 EnQueue(LinkQueue *Q, QElemType e) ②出队操作,队空 DeQueue(LinkQueue *Q, QElemType *e) ③输出队列中元素 0utputQueue(LinkQueue Q) (2)调用上述函数实现下列操作,操作步骤如下。 ①调用进队函数建立一个队列。 ②读取队列中的第一个元素。 ③从队列中删除元素。 ④输出队列中的所有元素。 注意 每完成一个步骤就必须及时输出队列中元素,以便观察操作结果。
时间: 2023-06-18 21:03:57 浏览: 178
链式队列的实现,出队,入队等各种基本操作
4星 · 用户满意度95%
下面是链接队列的基本操作函数的代码实现:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct QNode {
QElemType data;
struct QNode *next;
} QNode, *QueuePtr;
typedef struct {
QueuePtr front;
QueuePtr rear;
} LinkQueue;
Status InitQueue(LinkQueue *Q) {
Q->front = Q->rear = (QueuePtr) malloc(sizeof(QNode));
if (!Q->front) {
exit(OVERFLOW);
}
Q->front->next = NULL;
return OK;
}
Status EnQueue(LinkQueue *Q, QElemType e) {
QueuePtr p = (QueuePtr) malloc(sizeof(QNode));
if (!p) {
exit(OVERFLOW);
}
p->data = e;
p->next = NULL;
Q->rear->next = p;
Q->rear = p;
return OK;
}
Status DeQueue(LinkQueue *Q, QElemType *e) {
if (Q->front == Q->rear) {
return ERROR;
}
QueuePtr p = Q->front->next;
*e = p->data;
Q->front->next = p->next;
if (Q->rear == p) {
Q->rear = Q->front;
}
free(p);
return OK;
}
void OutputQueue(LinkQueue Q) {
QueuePtr p = Q.front->next;
while (p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
LinkQueue Q;
QElemType e;
InitQueue(&Q);
EnQueue(&Q, 1);
EnQueue(&Q, 2);
EnQueue(&Q, 3);
printf("Enqueued elements: ");
OutputQueue(Q);
DeQueue(&Q, &e);
printf("Dequeued element: %d\n", e);
printf("Remaining elements: ");
OutputQueue(Q);
return 0;
}
```
接下来是调用上述函数实现的操作步骤:
```
LinkQueue Q;
QElemType e;
InitQueue(&Q);
EnQueue(&Q, 1);
EnQueue(&Q, 2);
EnQueue(&Q, 3);
printf("Enqueued elements: ");
OutputQueue(Q);
DeQueue(&Q, &e);
printf("Dequeued element: %d\n", e);
printf("Remaining elements: ");
OutputQueue(Q);
```
输出结果为:
```
Enqueued elements: 1 2 3
Dequeued element: 1
Remaining elements: 2 3
```
可以看到,第一步成功地建立了一个队列,并且输出了队列中的元素;第二步读取了队列中的第一个元素;第三步成功地从队列中删除了元素;第四步输出了队列中剩余的所有元素。
阅读全文