c语言实现队列的链式存储,借助入队列和出队列操作完成二项式展开式系数(杨辉三角)的输出
时间: 2023-01-28 11:45:11 浏览: 69
队列的链式存储可以通过使用链表来实现。
下面是 c 语言实现的队列的链式存储的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义队列中的结点
typedef struct QueueNode {
int data; // 结点数据
struct QueueNode *next; // 指向下一个结点的指针
} QueueNode;
// 定义队列
typedef struct Queue {
QueueNode *front; // 队头指针
QueueNode *rear; // 队尾指针
} Queue;
// 初始化队列
void initQueue(Queue *queue) {
queue->front = queue->rear = NULL;
}
// 判断队列是否为空
int isEmpty(Queue *queue) {
return queue->front == NULL;
}
// 入队列
void enqueue(Queue *queue, int data) {
// 创建新结点
QueueNode *newNode = (QueueNode*)malloc(sizeof(QueueNode));
newNode->data = data;
newNode->next = NULL;
// 如果队列为空,则将队头和队尾都设为新结点
if (isEmpty(queue)) {
queue->front = queue->rear = newNode;
}
// 否则将新结点插入到队尾
else {
queue->rear->next = newNode;
queue->rear = newNode;
}
}
// 出队列
int dequeue(Queue *queue) {
// 如果队列为空,则返回 -1
if (isEmpty(queue)) {
return -1;
}
// 取出队头结点
QueueNode *frontNode = queue->front;
int data = frontNode->data;
// 如果队列中只有一个结点,则将队头和队尾都设为 NULL
if (queue->front == queue->rear) {
queue->front = queue->rear = NULL;