목록자료구조 (4)
가자미의 개발이야기
개념 -자료를 쌓아두는 의미 -LIFO(Last In First Out). 리포, 후입선출 -푸시(Push) 스택에 자료를 추가하는 것 -팝(Pop) 스택에서 자료를 꺼내는 것 -피크(Peek) 자료를 꺼내지 않고 스택의 가장 최상위에 있는 자료에 접근 -오버플로우(넘침) 스택 크기를 초과하여 새로운 자료 추가 -언더플로우(부족) 원소가 없는데 자료를 꺼내려 함 -배열로 구현 시 복잡도는 낮지만, 스택 크기를 미리 고정. arraystack.h 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 #ifndef _ARRAY_STACK_ #define _ARRAY_STACK_ typedef struct ArrayStackNod..
개념 -다항식을 구성하는 각 항을 노드로 표현 -노드에는 항의 계수와 차수를 데이터로 포함. -이전에 작성했던 linkedlist.h 와 linkedlist.c를 사용 linkedlist.h(이전에 작성했던 코드에서 노드의 데이터 부분을 약간 수정) 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 #ifndef _LINKEDLIST_ #define _LINKEDLIST_ typedef struct ListNodeType { int degree;//차수 float coef;//계수 struct ListNodeType* pLink; }ListNode; typedef struct LinkedListType {..
개념 -마지막 노드가 첫번째 노드와 연결된 리스트. -이전 노트 탐색이 편리.(연결 리스트는 매번 처음부터 탐색해야 됨) ※원형 연결리스트는 헤드노드 대신에 헤드포인터를 사용해 구현해 볼 것임. 헤더파일 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 #ifndef _CIRCULARLIST_ #define _CIRCULARLIST_ typedef struct CircularListNodeType { int data; struct CircularListNodeType* pLink; }CircularListNode; typedef struct CircularListType { int current..
개념 1. 포인터를 이용해서 물리적으로 떨어진 노드들을 논리적으로 연결. 2. 최대 원소 개수 지정 불필요. 3. 중간에 원소 추가 시 이동 연산 불필요. 4. 물리적으로 연결된 것이 아니기 때문에 탐색 연산 비용이 높음 헤더파일 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 #ifndef _LINKEDLIST_ #define _LINKEDLIST_ typedef struct ListNodeType { int data; struct ListNodeType* pLink; }ListNode; typedef struct LinkedListType { int currentElementCount; ListNode h..