假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(植意不设头指针),试编写相应的队列初始化、入队列和出队列的c语言算法。
时间: 2024-04-21 20:07:00 浏览: 143
数据结构算法 习题 答案 带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针).pdf
5星 · 资源好评率100%
以下是队列初始化、入队列和出队列的 C 语言算法:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node *next;
} Node, *Queue;
void InitQueue(Queue *q) {
*q = (Node *) malloc(sizeof(Node));
(*q)->next = *q;
}
void EnQueue(Queue q, int x) {
Node *p = (Node *) malloc(sizeof(Node));
p->data = x;
p->next = q->next;
q->next = p;
q = p;
}
int DeQueue(Queue q, int *x) {
if (q->next == q) {
return 0;
}
Node *p = q->next->next;
*x = q->next->data;
free(q->next);
q->next = p;
return 1;
}
```
当然,如果你想了解更多和队列相关的算法,可以在 CSDN 上搜索相关内容。
阅读全文