LeetCode---Delete Node in a Linked List

来源:互联网 发布:淘宝买家后台操作流程 编辑:程序博客网 时间:2024/05/16 05:43

题目大意:给出一个链表中的节点,在链表中删除该节点,如果是尾节点则不删除。如:链表 1 -> 2 -> 3 -> 4 要删除链表中值为3的节点,则操作后的链表为1 -> 2 -> 4。

算法思想:

1.设置一个前驱节点和一个后继节点。

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) {                 if(node->next==NULL)            return;        else{                    ListNode* pNext=node->next;            ListNode* pre=node;            while(pNext!=NULL){                            node->val=pNext->val;                pre=node;//记录前驱指针                 node=pNext;                pNext=pNext->next;                cout<<"current:"<< node->val<<endl;            }            pre->next=NULL;            delete node;        }    }};

0 0
原创粉丝点击