队列的入队和出队操作c语言
时间: 2024-10-12 21:11:39 浏览: 51
c语言实现队列,出队入队等操作
在C语言中,队列是一种先进先出(First In First Out,FIFO)的数据结构,它的入队(Enqueue)和出队(Dequeue)操作通常通过数组或链表来实现。
**入队操作(Enqueue或Push):**
- 如果队列未满,将新元素添加到队列的末尾。对于数组队列,这通常是通过索引来完成的,如果数组长度满,可以考虑动态扩容(如使用`realloc`);对于链接队列,则是在头节点之后插入一个新的节点。
```c
void enqueue(int value, struct Queue *queue) {
if (queue->size == queue->capacity) {
// 扩容操作...
}
queue->items[queue->size] = value; // 数组队列
queue- 如果队列非空,从队列头部移除并返回第一个元素。同样,数组队列需要更新指针,而链表则直接删除头节点。
```c
int dequeue(struct Queue *queue) {
if (queue->size == 0) {
return -1; // 或者抛出异常,表示队列为空
}
int value = queue->items[0]; // 数组队列
queue->items[0] = queue->items[queue->size - 1]; // 将最后一个元素移到首位
queue->size--; // 减少队列大小
// 对于链表,这里可能会有更复杂的删除节点操作
return value;
}
```
阅读全文