链队列的基本操作c++
时间: 2023-12-06 18:00:49 浏览: 107
链队列是一种基于链式存储结构实现的队列,其基本操作包括:
1.初始化操作:创建一个空的链队列,即初始化队头和队尾指针为空。
2.判断队列是否为空:检查队头指针和队尾指针是否相等,如果相等则队列为空,否则队列非空。
3.入队操作:将新元素插入队尾,并更新队尾指针。
4.出队操作:将队头元素删除,并更新队头指针。
5.获取队头元素:返回队头元素的值,但不删除它。
6.获取队列长度:遍历队列,统计元素个数即可。
7.清空队列:遍历队列,释放所有节点,将队头和队尾指针置为空。
以下是链队列的基本操作的C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int data;
struct node *next;
}Node;
typedef struct queue{
Node *front;
Node *rear;
}Queue;
// 初始化队列
void initQueue(Queue *q){
q->front = q->rear = NULL;
}
// 判断队列是否为空
int isEmpty(Queue *q){
return q->front == NULL;
}
// 入队操作
void enQueue(Queue *q, int data){
Node *p = (Node *)malloc(sizeof(Node));
p->data = data;
p->next = NULL;
if(q->front == NULL){
q->front = q->rear = p;
}else{
q->rear->next = p;
q->rear = p;
}
}
// 出队操作
int deQueue(Queue *q){
if(q->front == NULL){
printf("Queue is empty\n");
exit(1);
}
int data = q->front->data;
Node *p = q->front;
q->front = q->front->next;
if(q->front == NULL){
q->rear = NULL;
}
free(p);
return data;
}
// 获取队头元素
int getFront(Queue *q){
if(q->front == NULL){
printf("Queue is empty\n");
exit(1);
}
return q->front->data;
}
// 获取队列长度
int getLength(Queue *q){
int len = 0;
Node *p = q->front;
while(p != NULL){
len++;
p = p->next;
}
return len;
}
// 清空队列
void clearQueue(Queue *q){
Node *p = q->front;
while(p != NULL){
Node *tmp = p;
p = p->next;
free(tmp);
}
q->front = q->rear = NULL;
}
```
注意,为了方便起见,这里的队列元素类型都是整数。如果需要支持其他类型,可以将Node结构体中的data字段修改为对应类型即可。
阅读全文