链表移除元素复盘
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;struct ListNode {int val;struct ListNode* Next;ListNode(int v) :val(v), Next(NULL) {}//構(gòu)造函數(shù)的設(shè)計
};
class Solution {
public:ListNode* removeElements(ListNode* head, int val) {//刪除頭節(jié)點while (head != NULL && head->val == val) { // 注意這里不是if//因為可能有多個頭節(jié)點值相同,所以這里需要用while循環(huán)判斷。ListNode* tmp = head;//做一個臨時變量來存放頭節(jié)點,到時候釋放臨時變量達到刪除頭節(jié)點的效果。head = head->Next;delete tmp;}//刪除非頭節(jié)點ListNode* current = head;while (current->Next != NULL && current != NULL) {//根據(jù)鏈表跳躍性質(zhì),需要對當前節(jié)點后面和后后面的指向情況做出判斷。if (current->Next->val == val) {//當前節(jié)點后面節(jié)點的值是需要刪除的值進入ListNode* tmp = current->Next;current->Next = current->Next->Next;//改變當前節(jié)點指向,指向后后節(jié)點。delete tmp;//刪除后節(jié)點。}else {current == current->Next;//鏈表前進。}}return head;//返回頭節(jié)點用于后續(xù)的打印,插入,逆序等等操作。}
};
總結(jié)
- 上一篇: util中注入service
- 下一篇: word怎么改正错误单词_在word 里