본문 바로가기

코드

[자료구조/java] 스택 (Stack) - 1차원 배열, 연결리스트 구현 [ 스택 (Stack) - 1차원 배열, 연결리스트를 이용한 구현] "접시를 쌓듯이 자료를 차곡차곡 쌓아 올린 형태의 구조를 말한다" 따라서 스택은 시간순서에 따라 자료가 쌓이고, 삭제할 때는 가장 마지막에 삽입된 자료가 가장 먼저 삭제되는 후입선출(LIFO, Last-In-First-Out)의 구조를 갖는다. * push 삽입 연산 (1) top = top+1; 으로 삽입 될 위치를 확보 (2) S(top) 가 overflow 가 아니라면 top의 위치에 삽입 * pop 삭제 연산 (1) return S(top); 스택이 공백이 아니라면 top의 위치에 있는 원소 반환 (2) top = top - 1; 제일 위의 원소가 삭제되어 top이 한칸 줄었음을 표시 * 스택을 구현하기 전에 설명할 것이 있다. .. 더보기
[자료구조/java] 다항식의 연결 자료구조 표현 * 다항식의 연결 자료구조 표현 - 단순 연결 리스트를 이용하여 다항식 표현하기 - 계수, 지수, 다음노드를 가리키는 참조 노드 세개로 구성 [다항식의 단순 연결 리스트 표현] 단순 연결 리스트를 이용하여 다항식을 표현 하였다. 단순 연결 리스트는 data, next 두개의 멤버변수로만 구성했지만 다항식을 표현한 단순연결리스트는 계수(coef)와 지수(expo), 다음노드를 가리키는 next 노드로 구성하였다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ListNode.java package polynomial; public class ListNode { int coef; int expo.. 더보기
[자료구조/java] 이중 연결 리스트 (Doubly Linked List) * 이중 연결 리스트 (Doubly Linked List) - 양쪽 방향으로 순회할 수 있도록 연결한 리스트 원형 연결 리스트에서 현재 노드의 바로 이전 노드에 접근하려면 전체 리스트를 한바퀴 순회해야 하는 문제를 해결 [ 삽입연산 ] (1) 삽입할 노드를 가져온다. (2) 새 노드의 데이터 필드에 값을 저장한다. (3) 새 노드의 왼쪽 노드의 오른쪽 링크(rlink)를 새 노드의 오른쪽 링크(rlink)에 저장한다. (4) 그리고 왼쪽 노드의 오른쪽 링크(rlink)에 새 노드를 주소를 저장한다. (5) 새 노드의 오른쪽 노드의 왼쪽 링크(llink)를 새 노드의 왼쪽 링크(llink)에 자장한다. (6) 그리고 오른쪽 노드의 왼쪽 링크(llink)에 새 노드의 주소를 저장한다. [ 삭제연산 ] (1).. 더보기
[자료구조/java] 단순 연결 리스트 (Linked List) * 단순 연결 리스트 (Linked List) - 노드가 하나의 링크 필드에 의해서 다음 노드와 연결되는 구조를 가진 연결 리스트 * 장점 : 삽입, 삭제가 빠르다.하지만 중간에 있는 노드를 삭제하는 경우 탐색에 소요되는 시간이 있기 때문에맨 앞에 있는 요소를 삽입, 삭제하는 경우 O(1), 중간요소를 삽입, 삭제하는 경우 O(n)의 시간복잡도를 가진다.* 단점 : 탐색이 느리다.탐색의 경우 배열이 index를 이용하기 때문에 더빠르다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344Test.java package LinkedList; public class Test { public static void mai.. 더보기