모두CBT

그림과 같은 원형 연결 리스트 myCLL을 만들기 위해 다음 파이썬 코… | [7급 국가직 자료구조론] 22년 1회차 기출문제 상세 페이지

1[7급 국가직 자료구조론] 22년 1회차
그림과 같은 원형 연결 리스트 myCLL을 만들기 위해 다음 파이썬 코드를 작성하였다. (가)~(다)에 들어갈 코드를 A~D에서 바르게 연결한 것은?
class Node:
def __init__(self, data, next):
self.data = data
self.next = next

class CircularLinkedList:
def __init__(self):
self.last = None

def insert(self, data):
n = Node(data, None)
if self.last is None:
n.next = n
self.last = n
else:
[ (가) ]
[ (나) ]
[ (다) ]

myCLL = CircularLinkedList()
myCLL.insert(1)
myCLL.insert(2)
myCLL.insert(3)
A. n.next = self.last
B. n.next = self.last.next
C. self.last = n
D. self.last.next = n
(가)  (나)  (다)
문제 이미지
1
A  C  D
2
A  D  C
3
B  C  D
4
B  D  C
해설

(가)는 n.next = self.last.next, (나)는 self.last.next = n, (다)는 self.last = n 이 들어가 B, D, C 순이다.

self.last 가 마지막 노드를 가리키므로 self.last.next 는 첫 노드다. 새 노드를 끝에 붙이려면 먼저 새 노드가 첫 노드를 가리키게 하고, 기존 마지막 노드가 새 노드를 가리키게 한 뒤, 마지막으로 last 를 새 노드로 옮긴다.

예를 들어 insert(3) 시 3→1 연결, 2→3 연결, last=3 이 되어 그림처럼 1→2→3→1 원형이 되고 last 는 3을 가리킨다.

  • (가)에 n.next = self.last 를 두면 새 노드가 첫 노드가 아닌 기존 마지막 노드를 가리켜 원형 순서가 깨진다.
  • (나)에 self.last = n 을 먼저 실행하면 기존 마지막 노드를 잃어, 이어지는 self.last.next = n 이 새 노드 자신을 가리키게 만든다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[7급 국가직 자료구조론] 22년 1회차 25문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요7급 국가직 자료구조론 기출문제 암기장 전체 보기