数据结构实现一个链队列及基本功能
时间: 2023-06-20 07:08:24 浏览: 51
链队列是一种基于链表实现的队列,它有两个指针front和rear分别指向队头和队尾。下面是链队列的基本功能实现:
1. 初始化队列
```
typedef struct Node{
int data;
struct Node *next;
}Node;
typedef struct Queue{
Node *front;
Node *rear;
}Queue;
void init_queue(Queue *q){
q->front = q->rear = NULL;
}
```
2. 判断队列是否为空
```
int is_empty(Queue *q){
return q->front == NULL;
}
```
3. 入队
```
void enqueue(Queue *q, int data){
Node *new_node = (Node*)malloc(sizeof(Node));
new_node->data = data;
new_node->next = NULL;
if(q->rear == NULL){
q->front = q->rear = new_node;
}else{
q->rear->next = new_node;
q->rear = new_node;
}
}
```
4. 出队
```
int dequeue(Queue *q){
if(is_empty(q)){
printf("Queue is empty!\n");
exit(1);
}
int data = q->front->data;
Node *temp = q->front;
q->front = q->front->next;
free(temp);
if(q->front == NULL){
q->rear = NULL;
}
return data;
}
```
5. 获取队头元素
```
int get_front(Queue *q){
if(is_empty(q)){
printf("Queue is empty!\n");
exit(1);
}
return q->front->data;
}
```
6. 获取队列长度
```
int get_length(Queue *q){
int length = 0;
Node *temp = q->front;
while(temp){
length++;
temp = temp->next;
}
return length;
}
```