删除链表中的元素

来源:互联网 发布:汉语拼音教学软件 编辑:程序博客网 时间:2024/05/15 23:44
/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    /**     * @param head a ListNode     * @param val an integer     * @return a ListNode     */    ListNode *removeElements(ListNode *head, int val) {        // Write your code here        ListNode *dummyNode = new ListNode(0);dummyNode->next     = head;ListNode *p         = dummyNode;while(p->next!=NULL){if(p->next->val==val){p->next = p->next->next;}else p = p->next;}    return dummyNode->next;    }};

1. 哑节点(dummy node)的运用,使得头结点的处理不再特殊化。

2. 当找的相同值得节点时,删除该节点,p指针不动;值不相同时,p指针指向下一个节点。

3. 最后返回哑节点所连接的下一个节点。

0 0