链表移除元素复盘
#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) {}//構造函數的設計
};
class Solution {
public:ListNode* removeElements(ListNode* head, int val) {//刪除頭節點while (head != NULL && head->val == val) { // 注意這里不是if//因為可能有多個頭節點值相同,所以這里需要用while循環判斷。ListNode* tmp = head;//做一個臨時變量來存放頭節點,到時候釋放臨時變量達到刪除頭節點的效果。head = head->Next;delete tmp;}//刪除非頭節點ListNode* current = head;while (current->Next != NULL && current != NULL) {//根據鏈表跳躍性質,需要對當前節點后面和后后面的指向情況做出判斷。if (current->Next->val == val) {//當前節點后面節點的值是需要刪除的值進入ListNode* tmp = current->Next;current->Next = current->Next->Next;//改變當前節點指向,指向后后節點。delete tmp;//刪除后節點。}else {current == current->Next;//鏈表前進。}}return head;//返回頭節點用于后續的打印,插入,逆序等等操作。}
};
總結
- 上一篇: util中注入service
- 下一篇: Python之%s%d%f使用实例