Delete Node In A Linked List

Yohan Kim·2021년 9월 24일
0

problem

주어진 노드를 삭제하는 문제입니다.

https://leetcode.com/problems/delete-node-in-a-linked-list/submissions/

solution

/**
 * 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) {
        *node =*(node->next);
    }
};

/*
class Solution {
public:
    void deleteNode(ListNode* node) {
        ListNode* right = node->next;
        node->val = right->val;
        node->next = right->next;
        delete right;
    }
};
*/

후기

위 코드의 문제점은 무엇인가?
내가 수많은 링크드 리스트를 만들고, 삭제하는데 저 코드를 쓴다면,
node가 삭제되지 않고 이어져있으므로, 메모리가 부족해지고 말것이다.

만약 1-2-3-4-5 가 있는데 2를 삭제한다고하면

1-3-4-5
---/
--3

(주석처럼 작성하거나)
자바처럼 주기적으로 접근할 수 없는 변수를 지워줄 수 있는 환경이면, 위처럼 코드를 작성해도 괜찮을 것 같다.

profile
안녕하세요 반가워요!

0개의 댓글