1. 오버로드
리스트에 1개의 자료를 추가할 때
선형리스트 => 맨 뒤에 빈 칸을 하나 추가하고, 원하는 위치가 빌 때 까지 자료들을 한 칸씩 뒤로 이동
단순연결리스트 => 해당 위치에 링크만 추가
선형리스트의 데이터 삽입과 삭제
# 삽입
name = ['다현', '정연', '쯔위']
def insert_data(position, friend):
if position < 0 or position > len(name):
print('데이터 삽입 범위 벗어남')
return
name.append(None) # 맨 뒤에 빈칸 추가
cur_len = len(name) # 배열의 현재 크기
for i in
# 삭제
단순연결리스트의 원리 : 데이터와 링크로 구성된 노드가 연결되어 구성
# 함수
class Node():
def __init__(self):
self.data = None
self.link = None
# 메인
node1 = Node()
node1.data = '다현'
node2 = Node()
node2.data='정연'
node1.link = node2
node3 = Node()
node3.data = '쯔위'
node2.link = node3
# 각각의 데이터 출력
print(node1.data, end=' ')
print(node2.data, end=' ')
print(node3.data, end=' ')
>>> 다현 정연 쯔위
# 헤드에 따른 링크 출력
head = node1
print(head.data, end= ' ')
print(head.link.data, end= ' ')
print(head.link.link.data, end= ' ')
>>> 다현 정연 쯔위
# 노드(데이터) 삽입
newNode = Node()
newNode.data = '화사'
newNode.link = node2.link
node2.link = newNode
head = node1
print(head.data, end= ' ')
print(head.link.data, end= ' ')
print(head.link.link.data, end= ' ')
print(head.link.link.link.data, end= ' ')
>>> 다현 정연 화사 쯔위
# 노드(데이터) 삭제
node2.link = node3.link
del (node3)
head = node1
print(head.data, end= ' ')
print(head.link.data, end= ' ')
print(head.link.link.data, end= ' ')
>>> 다현 정연 쯔위
# 처음부터 끝까지 출력
current = node1
print(current.data, end= ' ')
while (current.link != None):
current = current.link
print(current.data, end=' ')
print()
>>> 다현 정연 쯔위
## 함수
class Node() :
def __init__(self):
self.data = None
self.link = None
def printNodes(start) :
current = start
print(current.data, end=' ')
while (current.link != None):
current = current.link
print(current.data, end=' ')
print()
## 전역
memory = [ ]
head, current, pre = None, None, None
dataAry = ['다현', '정연', '쯔위', '사나', '지효']
## 메인
node = Node()
node.data = dataAry[0]
head = node
memory.append(node)
for data in dataAry[1:] : # ['정연', '쯔위', ...
pre = node
node = Node()
node.data = data
pre.link = node
memory.append(node)
printNodes(head)
'자료구조 및 알고리즘' 카테고리의 다른 글
[leet code] Add Two Numbers / JAVA (with chatGPT), 단일 연결 리스트, 얕은 복사 (0) | 2024.06.05 |
---|---|
[백준] 1788 : 피보나치 수의 확장 / JAVA, dp, 재귀, 피보나치 수열 (0) | 2023.07.30 |
[알고리즘] 순열, 조합 (파이썬, C++) (0) | 2023.03.15 |
[프로그래머스스쿨]자료구조/알고리즘 기초 (0) | 2023.03.13 |
이진탐색 사용처 (0) | 2023.03.02 |