请设计一段函数能够实现链式队列的出队操作。 设结点名为LinkQueue,队头指针为head,队尾指针为tail
时间: 2024-02-09 19:12:53 浏览: 66
数据结构算法-习题-答案-带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点注意不设头指针.docx
5星 · 资源好评率100%
下面是一个简单的链式队列出队操作的函数实现:
```c
//定义链式队列结点
typedef struct LinkQueueNode{
int data;
struct LinkQueueNode *next;
}LinkQueueNode;
//定义链式队列结构体
typedef struct LinkQueue{
LinkQueueNode *head;
LinkQueueNode *tail;
}LinkQueue;
//链式队列出队操作
int Dequeue(LinkQueue *queue){
if(queue->head == NULL) return -1; //队列为空,返回-1
LinkQueueNode *p = queue->head;
int data = p->data;
queue->head = p->next; //更新队头指针
free(p); //释放出队结点的内存
if(queue->head == NULL) queue->tail = NULL; //如果队列已空,更新队尾指针
return data; //返回出队元素值
}
```
该函数首先判断队列是否为空,如果为空则返回-1。如果队列不为空,就定义一个指针指向队头结点,获取队头结点的数据值,然后更新队头指针并释放出队结点的内存。如果队列中只有一个元素,那么出队后队列为空,需要更新队尾指针。最后返回出队元素的值。
阅读全文