| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 944 人关注过本帖
标题:用单循环表表示队列问题 急求解
只看楼主 加入收藏
笨鸟先飞%
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-10-31
收藏
 问题点数:0 回复次数:2 
用单循环表表示队列问题 急求解
设长度为 n 的链队列用单循环表表示,若只设头结点或只设尾指针,则分别该怎样进行出队和入队操作?
搜索更多相关主题的帖子: 求解 
2008-10-31 22:12
shirley蝶
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-10-29
收藏
得分:0 
如果只是设一个指针的话,你要把这个队列想象成一个圆环行,假设队列的尾部是tail,那么队列的头部就是tail->next;
出队列操作:
error_code queue::serve()
{
if(tail==null)return underflow;
node*old_front=tail->next;
node*front=old_front->next;
tail->next=front;
delete old_front;
return success;
}
入队列操作:
error_code queue::append(const queue_entry&item)
{
node*new_rear=new node(item);
if(new_rear==null)return overflow;
if(tail==null)tail=new_rear;
else
{
new_rear->next=tail->nest;
tail->next=new_rear;
tail=new_rear;
}
return success;
}
2008-11-01 10:12
笨鸟先飞%
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-10-31
收藏
得分:0 
不好意思,鉴于我是一个没什么基础的初学者,对下面的程序还是有些摸不着头脑,请各位大哥大姐出手帮助解释下
   
   以下是我个人的拙见,望帮忙指出错误
         

假设队列的尾部是tail,那么队列的头部就是tail->next;
出队列操作:
error_code queue::serve()
{
if(tail==null)return underflow;------尾指针为0则返回"下溢"?
node*old_front=tail->next;------node*old_front 指的是没出队前的头结点吗  那这个赋值语句的意思是?
node*front=old_front->next;------头结点指向第一个元素?
tail->next=front;-----------尾指针指向新的头结点?
delete old_front;-----------删除以前的头结点
return success;  ----------我看了半天,怎么没有元素的输出啊?
}
入队列操作:
error_code queue::append(const queue_entry&item)
{
node*new_rear=new node(item);-------给新的尾结点赋值
if(new_rear==null)return overflow;----新的尾指针为0时返回溢出
if(tail==null)tail=new_rear;-------若现下的尾指针指向为空,则将其赋值为新的尾指针
else--------这里的else是想对于  tail==null  来说的吗 
{
new_rear->next=tail->next;-------后面的基本上都能确定的拿主意了
tail->next=new_rear;
tail=new_rear;
}
return success;
}
2008-11-01 20:00
快速回复:用单循环表表示队列问题 急求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038420 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved