다음 파이썬 프로그램의 실행 결과는?class Node: def __i… | [7급 국가직 자료구조론] 25년 1회차 기출문제 상세 페이지
1[7급 국가직 자료구조론] 25년 1회차
다음 파이썬 프로그램의 실행 결과는?class Node:
def __init__(self, data, next):
self.data = data
self.next = next
class SinglyLinkedList:
def __init__(self):
self.head = None
def func1(self, data):
node = self.head
self.head = Node(data, node)
def func2(self, data):
if self.head is None: self.func1(data)
else :
node = self.head
while node.next is not None: node = node.next
node.next = Node(data, None)
def func3(self, pos):
if pos < 0: return None
node = self.head
while pos > 0 and node != None:
node = node.next
pos -= 1
return node
def showList(self):
node = self.head
while node :
print(node.data, end=' ')
node = node.next
myList = SinglyLinkedList()
myList.func1(1); myList.func2(2)
myList.func1(3); myList.func2(4)
myList.func2(myList.func3(0).data)
myList.showList()
1
1 2 3 4
2
2 3 4 1
3
3 1 2 4 3
4
3 3 1 2 4
해설
최종 리스트를 출력하면 3 1 2 4 3이다.
func1은 맨 앞 삽입, func2는 맨 뒤 삽입, func3(pos)은 head에서 pos칸 이동한 노드를 반환한다.
func1(1) → 1
func2(2) → 1 2
func1(3) → 3 1 2
func2(4) → 3 1 2 4
func3(0)은 head 노드(데이터 3)이므로 func2(3) → 3 1 2 4 3
- 1 2 3 4: 원소가 4개뿐이어서 마지막 func2 호출로 추가된 노드가 빠졌다.
- 2 3 4 1: 원소가 4개뿐이고 삽입 순서와도 맞지 않는다.
- 3 3 1 2 4: 마지막 3을 맨 앞에 붙인 결과지만 func2는 맨 뒤에 붙인다.
오류나 개정된 내용이 보이면 알려주세요