为什么循环队列中的头指针和尾指针不加上星号,而链队列中的头指针和尾指针有星号
时间: 2024-08-12 08:07:13 浏览: 128
程序设计-C and C++的实现:第8章 指针和基于指针的字符串1.pdf
在数据结构中,循环队列和链队列的区别主要体现在存储方式和元素链接方式上。
1. **循环队列**(Circular Queue)使用数组来实现,它的头指针(front)和尾指针(rear)是用来跟踪队列的起始和结束位置。由于数组是连续的内存空间,它们直接指向数组的元素,不需要额外的标识(*)。当队列满或为空时,会通过循环性质来处理,比如尾指针加一后超过数组长度则回到开头,这是数组特有的操作,无需额外标识。
2. **链队列**(Linked List Queue),每个节点包含数据和指向下一个节点的指针(如next)。头指针(head)和尾指针(tail)分别指向链表的第一个元素和最后一个元素。在这里,使用指针是为了标识节点,所以它们本身就需要被标记为指针类型,例如在C/C++中通常使用`struct Node *head`和`struct Node *tail`来表示,`*`用于表示指向内存地址的指针。
总结来说,循环队列的头尾指针直接指向数组元素,而链队列的头尾指针则用来标识链表节点。所以,循环队列的头尾指针不需要星号,而链队列需要。
阅读全文