1 연습문제
** 문제는 처음에 언급한 책에 나와있습니다 **
답 :
1. (1)선형 리스트 (2) 단순 연결 리스트
2. 3번
3. (a) 데이터 (b) 링크
4. 3번
5. (b) - (a) - (c)
6. 4번
7. (1) node.data (2) node.link (3) node
8. 2번
2 응용예제 01
사용자가 이름과 이메일을 입력하면 이메일 순서대로 단순 연결 리스트를 생성하는 프로그램
## 클래스와 함수 선언 부분 ##
class Node():
def __init__(self):
self.data = None
self.link = None
def printNodes(start):
current = start
if current == None:
return
print(current.data, end=' ')
while current.link != None:
current = current.link
print(current.data, end=' ')
print()
def makeSimpleLinkedList(nameEmail):
global memory, head, current, pre
node = Node()
node.data = nameEmail
memory.append(node)
if head == None: #첫 번째 노드일 때
head = node
return
# 첫 번째 노드보다 작을 때
if head.data[1] > nameEmail[1]:
node.link = head
head = node
return
# 중간 노드로 삽입하는 경우
current = head
while current.link != None:
pre = current
current = current.link
if current.data[1] > nameEmail[1]:
pre.link = node
node.link = current
return
# 삽입하는 노드가 가장 큰 경우
current.link = node
## 전역 변수 선언 부분 ##
memory = []
head, current, pre = None, None, None
## 메인 코드 부분 ##
if __name__ == "__main__":
while True :
name = input("이름--> ")
if name == "" or name == None :
break
email = input("이메일 ")
makeSimpleLinkedList([name,email])
printNodes(head)
3 응용예제 02
1~ 45 숫자 6개를 뽑는 로또 추첨 프로그램
import random
## 클래스와 함수 선언 부분 ##
class Node():
def __init__(self):
self.data = None
self.link = None
def printNodes(start):
current = start
if current == None:
return
print(current.data, end=' ')
while current.link != None:
current = current.link
print(current.data, end=' ')
print()
def makeList(num):
global memory, head, pre, current
node = Node()
node.data = num
memory.append(node)
#첫번째 노드
if head == None :
head = node
return
if head.data > num:
node.link = head
head = node
return
current = head
while current.link != None:
pre = current
current = current.link
if current.data > num:
pre.link = node
node.link = current
return
current.link = node
def findNum(num):
global memory,head, current, pre
if head == None :
return False
current = head
if current.data ==num:
return True
while current.link != None:
current = current.link
if current.data == num:
return True
return False
## 전역 변수 선언 부분 ##
memory = []
head, current, pre = None, None, None
## 메인 코드 부분 ##
if __name__ == "__main__":
Count = 0
while True:
lotto = random.randint(1,45)
if findNum(lotto):
continue
Count += 1
makeList(lotto)
if Count >= 6:
break
printNodes(head)
'자료구조' 카테고리의 다른 글
원형 연결 리스트의 일반 구현 (1) | 2022.10.18 |
---|---|
원형 연결 리스트의 기본과 간단 구현 (0) | 2022.10.18 |
단순 연결 리스트의 일반 구현과 응용 (0) | 2022.10.13 |
단순 연결 리스트의 개념과 간단구현 (0) | 2022.10.08 |
연습문제와 응용예제 (0) | 2022.10.07 |