![]() |
1
2
类型不匹配如下:
这里有两个问题:
更合适的电话是:
我可以解释“正确”使用
我想这里还有一个bug:
|
![]() |
2
1
我认为您正在寻找get()或ssscanf()函数来从控制台获取用户输入。队列代码看起来不错,您只需要从控制台获取整数,然后使用队列函数来执行操作。 |
![]() |
3
1
从你的评论来看,我认为问题状态是
要做到这一点,您需要:
如果没有对问题的更详细的定义,我就无法提供更多的帮助。 和 更好地指示你被困在哪里。 您正在使用的队列似乎是作为链接列表实现的,因此 可以 手动浏览列表以非破坏性地访问内容。这打破了抽象,但会很好地工作。
使用
|
![]() |
4
1
您已将接口发布到通用队列设施。在我看来,这是一个非常合理的排队设施。该工具允许您将项目放入队列,对队列提出简单的问题(例如队列是否为空?),并从队列中获取项目。在队列中,项目以先进先出(first-in,first-out)的方式输出,就像人们在物理队列中排队一样。因此,通常您会将新项目添加到队列的后面,同时从队列的前面移除项目。 从您的评论中,听起来您好像不关心最初填充队列。您的问题是,您希望在不添加或删除项目的情况下对现有队列中的每个项目执行处理。一些队列设施允许您迭代队列中当前的项目,以便您可以这样做。但不幸的是,我认为你的队列不允许这样做。提示是,接收queuefront()方法输出的itemptr参数最终不是指向队列节点,而是指向无效(即任意数据)。如果此方法让您看到队列前面的队列节点,您可以首先查看该队列节点的dataptr以检查数据,然后查看下一个指针以查看下一个队列节点。但是,您的工具只是向您显示数据,而不提供查找下一个队列节点的数据的功能。 但这不是大问题。只需从队列中取出每个项目,进行处理,然后立即将其放入新队列。当您查看了每个项目后,新队列将具有与原来队列相同的顺序的元素,而原来的队列现在将为空。换句话说,您仍然有一个队列,其中包含与您开始时相同顺序的项目。 编辑 我刚刚意识到改进这个想法可以稍微避免需要第二个队列。只需删除队列中的每个项,处理完后将其添加回同一队列。这样,一旦处理完每个项目,队列将再次处于原始状态,以相同的顺序处理相同的项目。 |
![]() |
5
1
很明显,正如Finnw指出的那样,在“*dataptr=number;”之前,您没有为dataptr分配内存。我只是通过更改上面的内容,让您的程序在gcc中运行良好。 |
![]() |
Community wiki · C中有哪些耗时的操作? 1 年前 |
![]() |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
![]() |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
![]() |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |