연결리스트(Linked list) 노드 삭제 - C 언어

2021. 4. 9. 22:38·C
728x90
반응형

2021.04.09 - [C/자료구조] - [자료구조] C언어 연결리스트(Linked list) 생성 / 출력

 

[자료구조] C언어 연결리스트(Linked list) 생성 / 출력

연결리스트 만들기 "월" "화" "수" "목" "금" 등 요일을 데이터값으로 갖는 연결리스트를 만들어보자. typedef struct node {         char data;         struct node* next;     } ..

tildacoderecorder.tistory.com

*이 글의 예제와 설명은 연결리스트의 개념에 대해 설명한 위 글을 기반으로 함.

 

연결리스트에서 노드 삭제하기

pre의 다음 노드를 삭제하는 방법

typedef struct node {
    char data;
    struct node* next;
} Node;
 
Node* head;
 
void delete(Node *pre) {
    Node* old;
    if (head == NULL) {
        printf("ERROR!!");
        return;
    }
    old = pre->next;
    if (old == NULL) return;
    pre->next = old->next;
}
cs

 

먼저 두 가지의 경우를 살펴봐야한다.

1. head가 NULL일 경우

2. pre의 다음 노드가 없을 경우

 

if문을 통해 head가 NULL이면 에러 메세지와 함께 리턴한다.

그렇지 않다면 구조체 포인터 변수 old를 생성해 pre노드의 다음 노드를 가리키도록 한다. old = pre->next

 

만약 old가 NULL이라면 (pre가 마지막 노드였다면) 삭제할 노드가 없으므로 리턴한다.

 

그렇지 않고 pre뒤로 노드가 더 있다면 pre->next = old->next를 한다. 이 부분을 그림으로 보면 다음과 같다.

 

old가 pre의 다음 노드인 node1을 가리키고 있으므로 old->next는 그 다음 노드인 node2를 가리키게 된다.

pre->next에 old->next값을 넣어줌으로써 pre는 node2를 가리키게 되고 node1은 연결리스트에서 제거된다.

* 위 그림의 예제는 pre뒤에 노드가 두 개 이상 있을 때를 가정한 것이며, node2자리에 노드 아닌 NULL이 있어도 똑같이 성립된다.

 

 

 

참조 : C로 배우는 쉬운 자료구조 / 이지영 / 한빛아카데미

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'C' 카테고리의 다른 글

push( ) 와 pop( ) 함수를 이용한 스택 - C 언어  (0) 2021.04.22
선형 리스트 삽입/삭제/탐색/종료 - C 언어  (0) 2021.04.16
연결리스트(Linked list) 노드 삽입 - C 언어  (0) 2021.04.09
연결리스트(Linked list) 마지막에서 두번째 데이터 출력 - C 언어  (0) 2021.04.09
연결리스트(Linked list) 생성 / 출력 - C 언어  (0) 2021.04.09
'C' 카테고리의 다른 글
  • push( ) 와 pop( ) 함수를 이용한 스택 - C 언어
  • 선형 리스트 삽입/삭제/탐색/종료 - C 언어
  • 연결리스트(Linked list) 노드 삽입 - C 언어
  • 연결리스트(Linked list) 마지막에서 두번째 데이터 출력 - C 언어
waVwe
waVwe
    반응형
  • waVwe
    waVwe 개발 블로그
    waVwe
  • 전체
    오늘
    어제
    • ALL (184)
      • Python (1)
      • Spring (15)
      • DevOps (10)
      • Git (6)
      • JAVA (4)
      • C (22)
      • 코테 문제 풀이 (124)
        • 프로그래머스 (43)
        • 백준 (2)
        • 정올 (64)
        • SW Expert Academy (1)
        • 온코더 oncoder (14)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

    • 🐙 Github
  • 공지사항

  • 인기 글

  • 태그

    이진트리
    알고리즘
    MSA
    프로그래머스
    형변환
    자료구조
    devops
    자바
    스프링부트
    while문
    C언어
    Til
    도커
    코테
    progate
    깃헙
    java
    깃
    docker
    스파르타코딩
    연결리스트
    내일배움캠프
    스파르타코딩클럽
    스프링
    아파치카프카
    정올
    springboot
    CI/CD
    C
    온코더
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
waVwe
연결리스트(Linked list) 노드 삭제 - C 언어
상단으로

티스토리툴바