연결리스트로 Stack 구현하기 - c언어
·
Data structure
Stack이란? Stack이란 FILO(First - In - Last -Out)형태로 먼저입력된 값이 가장 나중에 출력되는 형태이다. 스택은 2가지 함수로 구현할수 있는데 push함수와 pop함수로 push함수는 값을 넣을때마다 Header에 노드를 붙히고, pop을할때는 Header에 붙어있는 노드부터 없애는 형태이다. 1. 연결리스트 구조체로 정의하기 typedef struct Node { int data; struct Node* next; }Node; Node* head; Node* tail; 2. 초기 Header 와 Tail 선언 및 할당 void init() { head = (Node*)malloc(sizeof(Node)); tail = (Node*)malloc(sizeof(Node)); h..
양방향 연결리스트(c언어)
·
Data structure
메인함수 int main() { /*----------헤드와 테일 선언---------------*/ Node* head = (Node*)malloc(sizeof(Node)); Node* tail = (Node*)malloc(sizeof(Node)); head->next = tail; head->prev = NULL; tail->next = NULL; tail->prev = head; /*---------------노드 추가-------------------*/ insertFirst(head,10); insertFirst(head, 20); /*----------------노드 출력----------------*/ print(head, tail); /*----------------노드 제거--------..
단방향 연결리스트(c언어)
·
Data structure
기본main함수 설정 - 동적할당을 이용하기때문에 메모리해제가 필요 int main() { node* head = (node*)malloc(sizeof(node)); head->next = NULL; node* curr = head->next; while (curr != NULL) { printf("%d\n", curr->data); curr = curr->next; } curr = head->next; while (curr != NULL) { node* next = curr->next; free(curr); curr = next; } } 노드를 위한 구조체 typedef struct NODE //단일방향의 노드 구조체 { int data; struct NODE* next; }node; 헤드다음의 노드를..
dfs, bfs
·
Data structure
from collections import deque def bfs(graph,start_node): queue=deque() #조사할 노드 큐 visit=[] #방문을 한 노드 리스트 queue.append(start_node) #시작노드 while queue: node=queue.popleft() if node not in visit: visit.append(node) queue.extend(graph[node]) return visit def dfs(graph,start_nod): stack=deque() visit=[] stack.append(start_nod) while stack: node=stack.pop() if node not in visit: visit.append(node) stack..
유클리드 호제법
·
Data structure
방법1 def gcd(num1,num2): if(num1>num2): if(num1%num2==0): return num2 else: return gcd(num2,num1%num2) else: if(num2%num1==0): return num1 else: return gcd(num1,num2%num1) if __name__ == "__main__": num1,num2=map(int,input().split()) print(gcd(num1,num2))
에라토스의 체(python)
·
Data structure
방법1 if __name__ == "__main__": #크기는 100이라고 가정 arr=[] for i in range(101): arr.append(i) for i in range(11): if(arr[i]==0 or arr[i]==1): arr[i]=False continue if(arr[i]!=False): for k in range(i+i,101,i): arr[k]=False print(arr) 방법2 if __name__ == "__main__": #100까지의 수에서의 소수 구하기 num=int(input()) decimal=[] chk=False for i in range(2,num): if(i==2): decimal.append(i) else: for k in decimal: if(i%k..