【发布时间】:2011-02-28 02:18:57
【问题描述】:
老实说,我已经在这几天了。我已经实现了这个功能的困难部分,但现在只有一件小事。我想写的方法是删除链表的每个blockSize的第N个块。因此,如果我有一个大小为 7 {1,2,3,4,5,6,7}、N=2、blockSize=2 的链表,我想删除每个大小为 blockSize(2) 的 Nth(2nd) 块,所以删除 3、4、7。现在,为了让我的 for 循环正常工作,我需要为我创建的名为 numBlocksRemoved 的 int 值编写一个表达式。它计算要删除的块的总数。在这种情况下,它将是 2。这就是我所拥有的:
numBlockRemoved=(size/blockSize)/N;
但是,这仅在数字看起来不错的情况下有时才有效。如果我有size=8,N=2, blockSize=2,那么我会得到numBlockRemoved=2,这是正确的。但是,对于上面的示例,我得到的 int 值为 1,这是不正确的。我想要 2。我想了很久,这太荒谬了。我只是想不出一个适用于 numBlockRemoved 的公式。有什么想法吗?
【问题讨论】:
-
对于链表,您不必提前计算。事实上,链表通常不知道它们的大小。相反,当您到达列表末尾时,您的循环应该结束。
-
它是一个自定义的链表类。每个链表都有一个成员变量大小。
标签: c++ algorithm linked-list