티스토리 뷰

[자료구조] 원형 연결 리스트

< 이전 내용 >

 

안녕하세요 ! 우디입니다.🌞

오늘은 원형 연결 리스트 ( Circular Linked List )에 대해 알아봅시다 !


원형 연결 리스트 ( Circular Linked List )란 ?

처음과 끝이 없고, 리스트가 원형으로 순환하는 것을 말한다.

단순 연결 리스트와의 차이점은 마지막 노드의 링크가 NULL( 단순 연결 리스트 )이 아닌 맨 앞의 주소를 담고 있다는 것 !

 

원형 연결 리스트 ( Circular Linked List ) 구현

단순 연결 리스트의 구조체랑 동일합니다.

❌ 저는 헤드노드를 리스트의 맨 마지막 노드로 고정시켰습니다.

 

삽입

(1). 맨 앞쪽에 삽입하는 경우

  • phead : 헤드 포인터 (head) 에 대한 포인터 ( 여기에 head의 주소가 담긴다. )
  • new_node : 새로운 노드를 가르키는 포인터

< Total >

 

(2). 맨 뒷쪽에 삽입하는 경우

: (1)번의 과정 후 삽입하는 노드를 head 노드로 변경시켜주면 된다.

  • phead : 헤드 포인터 (head) 에 대한 포인터 ( 여기에 head의 주소가 담긴다. )
  • node : 새로운 노드를 가르키는 포인터

< Total >

 

삭제

  • phead : 헤드 포인터 (head) 에 대한 포인터 ( 여기에 head의 주소가 담긴다. )
  • p : 삭제될 위치의 선행노드를 가르키는 포인터 ( p 노드 다음에 삭제된다 . )
  • removed : 삭제될 노드를 가르키는 포인터 ( ❗❗ 노드를 동적할당 받았으면 반드시 삭제할 노드는 연결리스트 변경 후 메모리 해제시켜주기❗❗ )

 

  1. *phead ( head 값 ) 가 NULL 인 경우

: 바로 return 해준다.

 

  1. removed (삭제할려고 하는 노드) 가 head 인 경우

: head 값을 head->link 노드로 변경해준다.

 

  1. 가장 일반적인 경우

 

< Total >

 

역순

 

탐색

 

출력

 


노드 동적 생성 , 삽입, 삭제 , 역순 , 탐색 , 출력

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함