C ++:如何删除链表中所有出现的值

时间:2015-10-16 07:22:53

标签: c++ linked-list

我目前正在尝试研究链接列表在C ++中的工作方式,并且我遇到了删除链接列表中某个值的主题。我理解如何删除特定值的第一个实例,并且那里没有问题。但是,我无法解释如何删除链表中某些值的所有实例。我可以看到如何在列表的开头和中间删除任何值的实例,但是一旦l->接下来是nullptr我就会卡住。如果l-> next是nullptr,那么如何将指针从值之前重定向到要删除的值之后的某个位置?

如果这是一个重复的问题,我道歉;如果是这种情况,我会删除它。

1 个答案:

答案 0 :(得分:0)

为了删除一个节点你确实使它的指针无效,所以为了能够继续迭代列表,你需要在删除之前保存下一个指针:

  <c:forEach var="loop" items="${Courses}"
                varStatus="pLoop">

    <c:set var="pKey" value="${pKey+1}"/> <!-- value that needs to be set as new key -->

    <fmt:parseNumber var="tempKey" integerOnly="true" 
                   type="number" value="${loop.key}" />

    <!--Normally key values are set like this in hashmap in jstl --> 

    <c:set target="${Courses}" property="${pKey}" value="something"/>

    <!-- but I want to keep value intact, want to change only key -->                       
</c:forEach>