【发布时间】:2017-10-21 23:10:20
【问题描述】:
给定一个由整数 l 和一个整数 k 组成的单链表,如何从列表 l 中删除所有值为 k 的元素?最好在 O(n) 时间内。这是我所拥有的:
// Definition for singly-linked list:
// template<typename T>
// struct ListNode {
// ListNode(const T &v) : value(v), next(nullptr) {}
// T value;
// ListNode *next;
// };
//
ListNode<int> * removeKFromList(ListNode<int> * l, int k) {
ListNode iterator = l;
while(iterator != NULL)
{
if(iterator->value == k)
{
}
iterator = iterator->next;
}
}
有什么建议吗?
【问题讨论】:
-
您遇到了什么问题?您发布的代码是一个存根:您是否尝试过实现实际的删除机制?
-
如果您将
iterator = iterator->next;放在else中,可能会更容易。如果您只是在if中删除了iterator处的节点,则您不希望此运行。 -
提示 #1:使用
std::list或std::forward_list。提示 #2:查找删除/擦除习语。