在C语言中,队列是一种常见的数据结构,用于存储一系列数据,遵循先进先出(FIFO)的原则。队列的基本操作包括:
- 初始化队列,在使用队列之前,需要先初始化队列。可以使用malloc函数动态分配队列所需的内存空间,然后将队列头和队列尾指针都初始化为0,表示队列为空。
#define MAXSIZE 10 typedef struct { int data[MAXSIZE]; int front; // 队列头指针 int rear; // 队列尾指针 } Queue; void initQueue(Queue *q) { q->front = q->rear = 0; }
- 判断队列是否为空, 当队列头指针等于队列尾指针时,说明队列为空。
int isEmpty(Queue *q) { return q->front == q->rear; }
- 判断队列是否已满,当队列尾指针加1等于队列头指针时,说明队列已满。
int isFull(Queue *q) { return (q->rear + 1) % MAXSIZE == q->front; }
- 入队,将元素插入队列尾部,并将队列尾指针加1。
int enQueue(Queue *q, int value) { if (isFull(q)) { printf("队列已满,入队失败\n"); return 0; } q->data[q->rear] = value; q->rear = (q->rear + 1) % MAXSIZE; return 1; }
- 出队,从队列头部取出元素,并将队列头指针加1。
int deQueue(Queue *q, int *value) { if (isEmpty(q)) { printf("队列为空,出队失败\n"); return 0; } *value = q->data[q->front]; q->front = (q->front + 1) % MAXSIZE; return 1; }
- 获取队列长度,队列长度等于队列尾指针减去队列头指针。
int getLength(Queue *q) { return (q->rear - q->front + MAXSIZE) % MAXSIZE; }
以上就是C语言队列的基本操作,可以通过这些操作实现队列的基本功能。
评论