删除链表中的元素

xiaoxiao2021-02-27  141

/* 问题描述:删除链表中等于给定值val的所有节点。 来源:LintCode 作者:syt

日期:2017-7-10

思路:使用两个指针,首先注意head是否为val值,注意判断指针是否为NULL的顺序和连续几个val值出现的情况

*/

#include <iostream> #include <stack> using namespace std; template <typename T> class ListNode{ public: T val; ListNode<T>* next; ListNode<T>(const T& val, ListNode<T>* next = NULL) { this->val = val; this->next = next; } }; template <typename T> ListNode<T>* removeElements(ListNode<T>* head, int val) { while (head->val == val && head != NULL) { head = head->next; } ListNode<int>* p = head; ListNode<int>* q = NULL; while (p != NULL) { q = p; q = q->next; while (q != NULL && q->val == val) { q = q->next; } p->next = q; p = p->next; } return head; }

转载请注明原文地址: https://www.6miu.com/read-16628.html

最新回复(0)