[leetcode]51 Delete Node in a Linked List

来源:互联网 发布:征服者rd88升级软件 编辑:程序博客网 时间:2024/06/05 20:15

题目链接:https://leetcode.com/problems/delete-node-in-a-linked-list/
runtime:16ms

1、问题

Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.

Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with value 3, the linked list should become 1 -> 2 -> 4 after calling your function.

2、分析

这是一道有技巧的题目,咋一看不能解,但是链表的内容是可以变得,将当前节点的内容换成下一个节点的内容,删除下一个节点,解决问题。

3、小结

换一个思路,豁然开朗~

4、实现

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    void deleteNode(ListNode* node) {        ListNode *p = node->next;        ListNode *q = p->next;        node->val = p->val;        node->next = q;        delete(p);    }};

5、反思

0 0
原创粉丝点击