美文网首页
Remove Linked List Elements - 移除

Remove Linked List Elements - 移除

作者: 郑明明 | 来源:发表于2016-11-11 11:32 被阅读94次
  • 题目
    Remove all elements from a linked list of integers that have value val.
    Example
    Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
    Return: 1 --> 2 --> 3 --> 4 --> 5

  • 分析
    初步判断可以发现有两种情况的删除,一种是第一个节点的删除,一种是中间节点的删除,为了保持统一,让算法保持简洁的设计,所以手动添加一个新的节点辅助作为第一个节点

  • 代码

    ListNode* removeElements(ListNode* head, int val) {
        ListNode *newNode = new ListNode(-1);
        newNode->next = head;
        ListNode *currentNode = head;
        ListNode *previousNode = newNode;
        while (currentNode != NULL) {
            if (currentNode->val == val) {
                currentNode = currentNode->next;
                previousNode->next = currentNode;
            } else {
                previousNode = currentNode;
                currentNode = currentNode->next;
            }
        }
        return newNode->next;
    }

相关文章

网友评论

      本文标题:Remove Linked List Elements - 移除

      本文链接:https://www.haomeiwen.com/subject/dlhfpttx.html