Or71nH 2020. 5. 21. 07:27

###단축키

new_list = old_list   주소의 복사, 얕은 복사
new_list = old_list[:]   슬라이싱, 깊은 복사
new_list = []
new_list.extend(old_list)
  extend() : 리스트를 추가하는 함수 깊은 복사
new_list = list(old_list)   list(), 깊은 복사
import copy
new_list = copy.copy(old_list)
  copy 활용, 깊은 복사
new_list = [i for i in old_list]   리시트 함축, 깊은 복사
import copy
new_list = copy.deepcopy(old_list)
  리시트원소까지도 깊은 복사
가장느림
addtoFirst()   연결 리스트의 앞쪽에 원소를 추가하는 연산
addtoLast()   연결 리스트의 뒤쪽에 원소를 추가하는 연산
add()   연결 리스트의 특정 위치에 원소를 추가하는 연산
delete()   연결 리스트의 특정 위치에 있는 원소를 삭제하는 연산
get()   연결 리스트의 특정 위치에 있는 원소를 리턴하는 연산

### 첫노드 삭제 알고리즘

def deleteFirst():
	global Head
    if Head == None:
    	print('error')
    else:
    	Head = Head.link

# 노드삭제알고리즘

def delete(pre):
	if pre == None or pre.link == None:
    	print('error')
    else:
    	pre.link = pre.link.link

# 분활과정의 알고리즘

def merge_sort(m):
	if len(m) <= 1:
    	return m
    mid = len(m) //2
    left = m[:mid]
    right = m[mid:]
    
    left = merge_sort(left)
    right = merge_sort(right)
    
    return merge(left,right)
    

# 병합과정의 알고리즘

def merge(left, right):
	result = []
    while len(left) > 0 and len(right) > 0 :
    	if left[0] <= right[0] :
        	result.append(left.pop(0))
        else :
        	result.append(right.pop(0))
    if len(left) > 0 :
    	result.extent(left)
    if len(right) > 0 :
    	result.extend(right)
    return result

# push / pop 연산의 알고리즘

def push(i):
	global top
    top = Node(i, top)
    
def pop():
	global top
    
    if top == None:
    	print("error")
    else:
    	data = top.data
        top = top.link
        return data