그림과 같은 원형 연결 리스트 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문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요비슷한 기출
- dml에해당하는sql명령으로만나열된것은? {"answer":3,"content":[{"content":"delete,update,create,alter20년-1, 2회차-정보처리기사-필기
- dml(datamanipulationlanguage)명령어가아닌것은? {"answer":3,"content":[{"content":"insert","u20년-3회차-정보처리기사-필기
- ddl(datadefinelanguage)의명령어중스키마,도메인,인덱스등을정의할때사용하는sql문은? {"answer":3,"content":[{"con21년-2회차-정보처리기사-필기
