본문 바로가기

python/자료구조

(7)
문과생이 이해한 파이썬 Dijkstra의 최단 거리 알고리즘 #c언어로 쉽게 풀어쓴 자료구조 연습문제를 파이썬 코드로 구현 MAX_VERITICES=10 INF=1000000 class DIJKSTRA: def __init__(self, n, mat): self.n=n self.weight=mat self.distance=[None] * MAX_VERITICES #시작 정점으로부터의 최단 경로 거리 self.found=[False] * MAX_VERITICES #방문한 정점 표시 def choose(self): min=INF minpos=-1 for i in range(self.n): if self.distance[i] < min and not(self.found[i]) : min=self.distance[i] minpos=i return minpos def ru..
문과생이 이해한 파이썬 Floyd의 최단 거리 알고리즘 MAX_VERITICES=100 INF=1000000 class floyd: def __init__(self, n, mat): self.n=n self.weight=mat self.A=[[0 for i in range(MAX_VERITICES)]for i in range(MAX_VERITICES)] def run(self): for i in range(self.n): for j in range(self.n): self.A[i][j]=self.weight[i][j] self.printA() for k in range(self.n): for i in range(self.n): for j in range(self.n): if self.A[i][k] + self.A[k][j] 4정점->1정점->2정점으로 가중치..
문과생이 이해한 파이썬 BFS(너비 우선 탐색)- 인접 리스트 버전 #c언어로 쉽게 풀어쓴 자료구조 연습문제를 파이썬 코드로 구현 MAX_QUEUE_SIZE=10 MAX_VERITICES=10 #정점 class GraphNode: def __init__(self, v=None, link=None): self.vertex=v self.link=link class CircleQueue: def __init__(self): self.front=0; self.rear=0 self.queue=[None]*MAX_QUEUE_SIZE def is_empty(self): return self.front==self.rear def is_full(self): return (self.rear+1)%MAX_QUEUE_SIZE==self.front def enqueue(self, data): ..
문과생이 이해한 파이썬 BFS(너비 우선 탐색)- 인접 행렬 버전 #c언어로 쉽게 풀어쓴 자료구조 연습문제를 파이썬 코드로 구현 MAX_QUEUE_SIZE=10 MAX_VERITICES=10 #정점 class CircleQueue: def __init__(self): self.front=0; self.rear=0 self.queue=[None]*MAX_QUEUE_SIZE def is_empty(self): return self.front==self.rear def is_full(self): return (self.rear+1)%MAX_QUEUE_SIZE==self.front def enqueue(self, data): if self.is_full(): print('큐가 포화상태입니다.'); return self.rear=(self.rear+1)%MAX_QUEUE_SIZ..
문과생이 이해한 파이썬 연결리스트1-연습문제 #c언어로 쉽게 풀어쓴 자료구조 연습문제를 파이썬 코드로 구현 #9번 #9번 class Node: def __init__(self, data): self.data=data self.link=None class LinkedList: def __init__(self, data=None): self.head=None def insert(self, data): new_node=Node(data) if self.head==None: self.head=new_node return node=self.head while node.link is not None: node=node.link node.link=new_node def __str__(self): print_list='' node=self.head while T..
문과생이 이해한 파이썬 연결리스트1(다항식 덧셈 프로그램) class ListNode: class Node: def __init__(self, coef, expon, link): self.coef = coef self.expon = expon self.link = link def __init__(self): self.Ahead = None; self.Asize = 0 self.Bhead = None; self.Bsize = 0 self.Chead = None; self.Csize = 0 def Ais_empty(self): return self.Asize == 0 def Bis_empty(self): return self.Bsize == 0 def Cis_empty(self): return self.Csize == 0 def A_insert(self, coef,..
문과생이 이해한 파이썬 연결리스트1(삽입/삭제/출력/탐색/역순) 를 파이썬 코드로 바꿈 class Node: def __init__(self, data): self.data=data self.link=None class LinkedList: def __init__(self, data): new_node=Node(data) self.head=new_node def insert_first(self, data): new_node=Node(data) new_node.link=self.head self.head=new_node def insert_last(self, data): new_node=Node(data) node=self.head while node.link is not None: node=node.link node.link=new_node def search(sel..