다음은 이중 연결 리스트를 이용하여 덱(deque)을 구현한 파이썬 코… | [7급 국가직 자료구조론] 23년 1회차 기출문제 상세 페이지
1[7급 국가직 자료구조론] 23년 1회차
다음은 이중 연결 리스트를 이용하여 덱(deque)을 구현한 파이썬 코드이다. (가) ~ (라)에 들어갈 내용을 A ~ F에서 바르게 연결한 것은?class DQNode:
def __init__(self, data, left, right):
self.data = data
self.left = left
self.right = right
class DoublyLinkedDQ:
def __init__(self):
self.front = None
self.rear = None
def insertFront(self, data):
node = DQNode(data, None, self.front)
if self.front == None:
self.front = node
self.rear = self.front
else:
(가)
(나)
def deleteRear(self):
if self.front != None:
data = self.rear.data
(다)
if self.rear == None:
(라)
else:
self.rear.right = None
return dataA. self.front = node(가) (나) (다) (라)
B. self.front = self.rear
C. self.front.left = node
D. self.front.right = node
E. self.rear = self.rear.left
F. self.rear = self.rear.right
1
A C F A
2
C A E B
3
C A F D
4
D C E C
해설
(가)는 self.front.left = node, (나)는 self.front = node, (다)는 self.rear = self.rear.left, (라)는 self.front = self.rear이다.
insertFront: 새 노드의 right는 이미 기존 front를 가리키므로, 기존 front의 left를 새 노드로 연결한 뒤 front를 새 노드로 옮긴다. 순서가 바뀌면 기존 front를 잃는다.
deleteRear: rear를 왼쪽 노드로 옮기고, 그 값이 None이면 노드가 하나뿐이었으므로 front도 None(현재 rear 값)으로 만든다. 아니면 새 rear의 right 연결을 끊는다.
- (가)에서 front를 먼저 새 노드로 바꾸는 조합은 기존 front 참조를 잃고, rear를 right로 옮기면 항상 None이 되어 덱이 깨진다.
- (다)를 self.rear = self.rear.right로 두는 조합은 rear의 right가 항상 None이라 삭제 후 연결이 맞지 않는다.
- (가)를 self.front.right = node로 두는 조합은 새 노드가 front의 왼쪽에 붙어야 하므로 연결 방향이 반대이다.
오류나 개정된 내용이 보이면 알려주세요
이어서 풀어보기
[7급 국가직 자료구조론] 23년 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회차-정보처리기사-필기