【发布时间】:2011-08-30 01:14:45
【问题描述】:
所以我在解决这个问题时遇到了一些麻烦。 我创建了一个名为 dlist 的双向链表(其中包含一个链接节点帮助器类)。我有另一个名为 DeckOps 的类,它与链表一起使用。 dlist 已经包含 insertFront、removeFront、insertRear、removeRear 和打印函数的函数。目前,我将文件名传递给 DeckOps,然后读取文件,将 int 输入到列表的每个链接节点中(从后面放入以保持与文件中相同的顺序)。
现在我的问题是,我需要能够在列表中找到一个数字,所以我假设我需要一个查找功能。然后我需要能够选择数字以下的所有内容并将其与数字以上的所有内容交换。我认为单独的交换功能会很好吗? 我的主要问题是如何选择一个组并与另一个组交换。
谢谢
示例: 1 2 3 4 5 6 7 8 9 查找 6 查找 4 交换低于 6 的所有内容,以及高于 4 的所有内容 7 8 9 4 5 6 1 2 3 结果 编辑: 在写出这个例子时刚刚意识到程序需要知道我搜索的数字是靠近顶部还是底部。
不是在寻找解决方案,只是一些帮助。
【问题讨论】:
-
这是作业吗?如果没有,你为什么不使用
std::list<>? -
我建议您先尝试编写您的 find 函数,并对其进行全面测试,然后再查看交换。我觉得你应该在来找我们之前尝试写一个 find()。
-
可以使用列表来完成选择,而不是 int 存储指向列表节点的指针。但是你说的交换是什么意思?能举个例子吗?
-
那么如果你的列表是
[1, 2, 3, 4, 5, 6],而你选择了3,这会变成[6, 5, 4, 3, 2, 1](有效地反转列表)吗?还是你的意思是[4, 5, 6, 3, 2, 1]? -
我的意思是如果我的列表包含 1 2 3 4 5 6 7 在交换发生在 5 以下的所有内容和 3 以上的所有内容之后,它将是 6 7 3 4 5 1 2 。 find 功能正在开发中,这真的不是问题。
标签: c++ pointers linked-list double