关于队列的简单问题

gsp397 2003-08-18 05:12:02
怎样遍历队列,并修改其中某一个元素呢,好象没有相关的成员函数,需要用泛型算法吗

假如现在队列中现有元素为 4,3,2,9,8,5
我现在想找到比3小(这个是查找条件)的元素(当然是2),并删除它,怎么办?


...全文
86 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
madasoft 2003-08-18
  • 打赏
  • 举报
回复
他不仁,你不义,管他呢!
-----------------------
说得好!我直接访问你的内存,把你干掉,呵呵。
happycock 2003-08-18
  • 打赏
  • 举报
回复
严格意义上所谓的队列就是要满足先进先出的原则,并且除去进口和出口,不可以在其他操作数据。如果你非要在中间修改数据,就违背了队列的定义,又何必用队列来实现?
同意楼上的。
实际上,还有优先队列,这个不是严格意义上的队列了。然而我们的专家们这么干,只会让初学者疑惑。
对于楼主的要求,可以用vector或者list来代替,因为他们对外表现也可以成为“队列”。就不要追求什么定义上的严格了——他不仁,你不义,管他呢!
njtu 2003-08-18
  • 打赏
  • 举报
回复
使用vector吧,这可不是队列噢!

vector<int> vec(5);
vector<int>::iterator iter = vec.begin();
iter = vec.find_if(vec.begin(),vec.eng(),func()) //这里是自己的判断函数
vec.erase(iter);

也可以不用标准库,自己写一个链表结构,然后函数实现。
made_in_ 2003-08-18
  • 打赏
  • 举报
回复
严格意义上所谓的队列就是要满足先进先出的原则,并且除去进口和出口,不可以在其他操作数据。如果你非要在中间修改数据,就违背了队列的定义,又何必用队列来实现?
可以换种方式,比如vector或者list什么的来实现你所需要的功能。
当然,如果不用队列不行的话,你也可以自己为队列添加这种功能,伪码如下:
void deleteFromQueue(Queue& src, int element)
{
Queue qt;

int t;
while(!src.Empty()){
if( (t = src.pop()) > element)
qt.push(t);
}

while(qt.Empty())
src.push(qt.pop());
}


gsp397 2003-08-18
  • 打赏
  • 举报
回复
难道一定要用链表才行?
airtraffic 2003-08-18
  • 打赏
  • 举报
回复
在标准库中,没有你要实现的队列遍历操作啊!
gsp397 2003-08-18
  • 打赏
  • 举报
回复
不是 我的程序题目明明写着 两个队列(一定有我说的那种操作)和一个链表
ZhangYv 2003-08-18
  • 打赏
  • 举报
回复
队列能遍历吗?满足先进先出的结构才称为队列.楼主是指链表吧?

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧