我有一个将随机整数插入列表的函数,以及一个显示列表的函数。凭借我现在所拥有的,有没有办法反向显示该列表?
void InsertRandomInts()
{
LinkedSortedList<int> list;
srand((unsigned)time(NULL));
for (int i = 0; i < 50; ++i)
{
int b = rand() % 100 + 1;
list.insertSorted(b);
}
displayListForward(&list);
}
void displayListForward(SortedListInterface<int>* listPtr)
{
cout << "The sorted list contains " << endl;
for (int pos = 1; pos <= listPtr->getLength(); pos++)
{
cout << listPtr->getEntry(pos) << " ";
}
cout << endl << endl;
}
答案 0 :(得分:2)
将列表从rbegin()
重复到rend()
并打印出来。你将反过来打印它。
1)停止重新发明轮子,只使用具有这些功能的标准容器。或者2)实现rbegin()&amp; rend()用于自定义容器。
像
for (auto it = list.rbegin(); it != it.rend(); ++it)
// Print *it
答案 1 :(得分:0)
如果你不需要特定于列表的语义,例如存在能够删除元素而不会将迭代器减少到其他元素。)
添加所有项目后,可以应用std::list
成员函数。然后,您最终可以使用std::vector
和sort
进行反向迭代。
这是一个简单的例子:
rbegin
但这可能是矫枉过正;要快速解决问题,只需扭转当前循环:
rend