赞
踩
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
返回删除后的链表的头节点。
注意:此题对比原题有改动
最简单的链表删除,要用一个指针记录上一次的节点,然后注意删除的是头结点的情况,为了减少时间,删除以后立即跳出循环。
- /**
- * Definition for singly-linked list.
- * struct ListNode {
- * int val;
- * ListNode *next;
- * ListNode(int x) : val(x), next(NULL) {}
- * };
- */
- class Solution {
- public:
- ListNode* deleteNode(ListNode* head, int val) {
- if(head == NULL){
- return NULL;
- }
-
- if(head->val == val){
- if(head->next == NULL){
- return NULL;
- }else{
- return head->next;
- }
-
- }
-
- ListNode* p = head->next;
- ListNode* pLast = head;
- while(p != NULL){
- if(p->val == val){
- pLast->next = p->next;
- break;
- }
- pLast = p;
- p = p->next;
- }
-
- return head;
- }
- };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。