关于链式队列是否需要头结点
来源:互联网 发布:coc七本兵种升级数据 编辑:程序博客网 时间:2024/04/30 21:45
作者:冯利美,华清远见嵌入式培训中心讲师。
队列是一种特殊的线性表,它只允许在表头进行删除操作,而在表尾进行插入操作,是一种先进先出的数据结构。
队列可以采用数组存储,也可以采用链式存储。关于链式存储常见的又有两种:带头结点和不带头结点。我们建议采用带头结点的实现方式,因为,这样可以大大简化对队列的处理。
下面以入队操作为例,对本文观点进行了进一步的阐述。假设基本结构的定义为:
typedef int datatype;
typedef struct node
{
datatype data;
struct node* next;
}listnode, *linknode;
typedef struct
{
linknode front;
linknode rear;
}linkqueue;
带头结点的链队入队实现:
void enqueue(linkqueue* q, datatype x){
linknode p = (linknode)malloc(sizeof(listnode));
p->data = x;
p->next = NULL;
q->rear->next = p;
q->rear = p;
}
不带头结点的链队入队实现:
void enqueue(linkqueue* q, datatype x){
linknode p = (linknode)malloc(sizeof(listnode));
p->data = x;
p->next = NULL;
if(q->front == NULL){
q->front = p;
q->rear = p;
return;
}
q->rear->next = p;
q->rear = p;
}
比较上面两段程序,带头结点的链队的入队操作,只要把新生成的结点加到尾结点后即可。而不带头结点的操作则还要注意到边界操作,假如是第一次入队,需修改队头指针。同样的道理,对于出队操作,假如是最后一个结点出队,需要注意修改队尾指针。由此,我们建议链式队列最好采用带头结点的实现方式。
嵌入式及3G相关资源及学习请点击:嵌入式开发视频 android开发视频 android培训 3G培训 QT培训 QT开发视频 物联网培训 物联网技术视频 嵌入式学习
- 关于链式队列是否需要头结点
- 关于链式队列是否需要头结点
- 关于链式队列是否需要头结点
- 关于链式队列是否需要头结点
- 链式队列头结点好处优点
- 链式存储结构的头指针和头结点
- 链式存储线性表(有头结点)
- 线性表的链式存储实现(有头结点)
- 关于有头结点和无头结点的单链表
- 头结点是否为空的问题
- 关于头结点的一些知识!
- 头结点
- 带有头结点的单链表中判断是否存在环
- 链式队列
- 链式队列
- 链式队列
- 链式队列
- 队列--链式
- TestComplete自动化测试实战训练课,广州6月11、12日两天
- 要发SCI的同志们注意了,这是整理出来的套话系列,有用否自己看
- 2011年5月23日
- 再看委托
- 经过思想斗争之后会如何!
- 关于链式队列是否需要头结点
- 嗯
- 四级,四级,四级!!!!
- DELL 分区表的问题的解决
- Test深度复制
- 记事本
- 我来了
- 2011年5月24日
- Runnable与Thread的区别