请教一道简单的题目

jp1984 2004-03-15 11:00:06
如何有递归函数r_reverseOutput() 按归反的顺序输出迭代器范围[first,last)的元素。template<typename T>
void r_reverseOutput(list<T>::iterator first,list<T>::iterator last)
...全文
108 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
gameboy007 2004-03-21
  • 打赏
  • 举报
回复
你的意思是否这样

#include <iostream>
#include <list>

using namespace std;

template<typename T>
void r_reverseOutput(typename list<T>::iterator first, typename list<T>::iterator last)
{
while (true) {
swap(*first, *--last);
if (first == last)
break;
else if (++first == last)
break;
}
}

int main()
{
int v[] = { 1,2,3,4,5 };
list<int> a(v,v+sizeof(v)/sizeof(v[0]));

r_reverseOutput<int>(a.begin(), a.end());

list<int>::iterator beg(a.begin());
while (beg != a.end())
cout << *beg++ << " ";

system("PAUSE");
}
jp1984 2004-03-21
  • 打赏
  • 举报
回复
强!!!对了,就是这个意思。。。给分给分了!!
jp1984 2004-03-20
  • 打赏
  • 举报
回复
对的 啊,就是把原来表中元素反序存放。。至少要调用本身吧。。你的程序我为什么就看不明白呢
gameboy007 2004-03-20
  • 打赏
  • 举报
回复
你所指的递归是否是return一個反須序的容器?
jp1984 2004-03-20
  • 打赏
  • 举报
回复
这哪里用到递归了?????
gameboy007 2004-03-20
  • 打赏
  • 举报
回复
你所说的停止条件是是range[begin,end)?
我当是的话就是以下这样:
template<typename T>
void r_reverseOutput(list<T>::reverse_iterator first,list<T>::reverse_iterator last)
{
while (first != last) {
first->DoSomthing(); 对各个元素實行其调用
if (*first == condition) 達到停止条件後离开while loop
break;
++first;
}
first->DoOther();
}

如果你所说的停止条件是要找到其元素後就停止的話,应该用find例如:
list<T>::iterator itr(find(ctr.rbegin(), ctr.rend(), T_value));

jp1984 2004-03-17
  • 打赏
  • 举报
回复
有没有人顶?? 解决就加分……
gameboy007 2004-03-16
  • 打赏
  • 举报
回复
template<typename T>
void r_reverseOutput(list<T>::reverse_iterator first,list<T>::reverse_iterator last)
{
}

调用
reverseOutput(container.rbegin(), container.rend());


jp1984 2004-03-16
  • 打赏
  • 举报
回复
没有停止条件?????
jp1984 2004-03-16
  • 打赏
  • 举报
回复
是课后练习啊, WILLAM TOPP 和WILLIAM FORD 那本经典的《DATA STRUCTURE ,C++描述,USING STL》上的联系,真的不难,但是我一点思路都没有,为什么这么长时间了还是没有人来解决 。。我现在就在找那个停止条件。 用什么算法来实现的问题。。模型建不起来。
dahan2005 2004-03-16
  • 打赏
  • 举报
回复
很复杂呀!关注
congliu 2004-03-15
  • 打赏
  • 举报
回复
在传入参数时,用list的对象的rbegin()和rend()即可

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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