자료구조 및 알고리즘

[자료구조] 선형리스트 / 단순연결리스트 차이점 비교

콩콩(๓° ˘ °๓)♡ 2023. 4. 17. 10:27

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)