๋ชฉ๋ก์๋ฃ๊ตฌ์กฐ (6)
๐ก

ํ(Queue) : FIFO(First-In-First-Out) = ์ ์ ์ ์ถ -๋ฆฌ์คํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ํ ์๋ฃ๊ตฌ์กฐ But ์๋ฃ์ ์ถ๊ฐ๋ ๋งจ ๋ค(Rear)์์, ์ ๊ฑฐ๋ ๋งจ ์(Front)์์ ํ์ ์ฐ์ฐ ์ธํ(enqueue): ํ์ ๋งจ ๋ค์ ์๋ก์ด ์๋ฃ๋ฅผ ์ถ๊ฐ ๋ํ(dequeue): ํ์ ๋งจ ์์์ ์๋ ์๋ฃ๋ฅผ ์ ๊ฑฐํ ๋ค ๋ฐํ ํผํฌ(peek): ํ์ ๋งจ ์์ ์๋ ์๋ฃ๋ฅผ ์ ๊ฑฐํ์ง ์๊ณ ๋ฐํ ๋ฐฐ์ด์ ์ด์ฉํ ์ ํ ํ #include #include #include typedef struct ArrayQueueNodeType// ๋ ธ๋ ๊ตฌํ, ๋ ธ๋๋ก ์๋ฃ๋ฅผ ๊ฐ์ธ๋ ์ด์ ๋ ๋์์ ์ฌ๋ฌ๊ฐ์ ์๋ฃ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด { chardata; } ArrayQueueNode; typedef struct ArrayQueueType {..

์ด์ ํฌ์คํธ์์ ์ฌ์ฉํ linkedStack ์ ์ด์ฉํ ํค๋ํ์ผ #ifndef _LINKEDSTACK_ #define _LINKEDSTACK_ typedef struct LinkedStackNodetype { char data; struct LinkedStackNodetype *pLink;//๋งํฌ }LinkedStackNode; typedef struct LinkedStacktype { int currentCount; LinkedStackNode *pTop;// ํ ๋ ธ๋์ ํฌ์ธํฐ }LinkedStack; LinkedStack*createLinkedStack(void); intpushLS(LinkedStack *pStack, char data); intisLinkedStackEmpty(LinkedStack..
์คํ(Stack) : LIFO (Last-In-First-Out) = ํ์ ์ ์ถ - ๋ฆฌ์คํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ํ ์๋ฃ๊ตฌ์กฐ but ๋ฆฌ์คํธ์ ๋ค๋ฅด๊ฒ ์๋ฃ์ ์ถ๊ฐ, ์ ๊ฑฐ๊ฐ ์คํ์ ๋งจ์(top)์์๋ง ์ด๋ฃจ์ด์ง ์คํ์ ์ฐ์ฐ ํธ์(push) : ์คํ์ ๋งจ ์์ ์๋ก์ด ์๋ฃ๋ฅผ ์ถ๊ฐ, ์คํ์ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํด pushํ๋ฉด ์ค๋ฒํ๋ก์ฐ ํ(pop) : ์คํ์ ๋งจ ์์ ์๋ฃ๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํ, ๋น ์คํ์ popํ๋ฉด ์ธ๋ํ๋ก์ฐ ํผํฌ(peek) : ์คํ์ ๋งจ ์์ ์๋ฃ๋ฅผ ์ ๊ฑฐํ์ง ์๊ณ ๋ฐํ ๋ฐฐ์ด์ ์ด์ฉํ ์คํ #include #include #include typedef struct ArrayStackNodeType {// ๋ ธ๋ char data; } ArrayStackNode; typedef struct ArrayStackType {/..
๊ณตํต์ ์ฐจ์ด์ ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ํฌ์ธํฐ๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํ ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ์ฅ ๋ง์ง๋ง ๋ ธ๋๊ฐ ์ฒซ ๋ฒ์งธ ๋ ธ๋์ ์ฐ๊ฒฐ ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์๋ฐฉํฅ ๋งํฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ํน์ ๋ ธ๋ ์ด์ ๋ ธ๋์ ๋ํ ์ง์ ์ ๊ทผ์ด ๊ฐ๋ฅ ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ : ๋ง์ง๋ง ๋ ธ๋๊ฐ ์ฒซ ๋ฒ์งธ ๋ ธ๋์ ์ฐ๊ฒฐ, ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋จ๋ฐฉํฅ ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ : ๋ง์ง๋ง ๋ ธ๋๊ฐ ํค๋๋ ธ๋์ ์ฐ๊ฒฐ, ์๋ฐฉํฅ - ๋ ธ๋์ ์ด์ ๋ ธ๋์ ๋ค์ ๋ ธ๋ == ๋ ธ๋์ ๋ค์ ๋ ธ๋์ ์ด์ ๋ ธ๋ == ๋ ธ๋ ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ #include #include #include typedef struct CircularListNodeType { int data; struct CircularListNodeType *pLink; } CircularListNode;..
๊ตฌ๋ถ ๊ตฌํ ๋ฐฉ์ ์์ฐจ์ ์ ์ฅ์ ๊ตฌํํ ๋ฐฉ๋ฒ ์๋ฃ ์ ๊ทผ ์๋ ๊ตฌํ ๋ณต์ก๋ ๋ฐฐ์ด ๋ฆฌ์คํธ ๋ฐฐ์ด ๋ฌผ๋ฆฌ์ ์ ์ฅ ์์๊ฐ ์์ฐจ์ ๋น ๋ฆ O(1) ๋ฎ์ ์ต๋ ์ ์ฅ ๊ฐ์ ํ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ํฌ์ธํฐ ๋ ผ๋ฆฌ์ ์ ์ฅ ์์๊ฐ ์์ฐจ์ ๋๋ฆผ O(n) ๋์ ๋ฐฐ์ด๋ฆฌ์คํธ๋ ํน์ ์ธ๋ฑ์ค์ ๋ฐ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์๋ฃ์ ๊ทผ ์๋๊ฐ O(1)์ด๊ณ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ํค๋๋ ธ๋๋ถํฐ ํฌ์ธํฐ๋ก ๋ ธ๋๋ฅผ ํ์ํด์ผ ํ๊ธฐ ๋๋ฌธ์ n๋ฒ์งธ ์๋ฃ์ ์ ๊ทผํ๋ ค๋ฉด O(n) -- ๋ค๋ง ๋ฐฐ์ด๋ฆฌ์คํธ๋ ๋ ธ๋๋ฅผ ์ถ๊ฐ, ์ญ์ ํ๋ ค๋ฉด ์ถ๊ฐ, ์ญ์ ํ๋ ค๋ ๋ ธ๋ ์ค๋ฅธ์ชฝ์ ์๋ ๋ชจ๋ ๋ ธ๋๋ฅผ ์ด๋์์ผ์ผํด์ ์๋ฃ์ ์ถ๊ฐ ์ญ์ ๊ฐ ๋ง์ผ๋ฉด ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ๊ตฌํํ๋ ๊ฒ์ ์ถ์ฒ -์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋ ๊ตฌ์กฐ : ์๋ฃ + ์ฐ๊ฒฐ ์ ๋ณด(๋งํฌ) -์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋ง์ง๋ง ๋ ธ๋์ ๋งํฌ = NULL #include #includ..
๋ฆฌ์คํธ(list) : ์ฌ๋ฌ ๊ฐ์ ์๋ฃ๊ฐ ํ ์ค๋ก ์ฐ๊ฒฐ๋ ๊ตฌ์กฐ == ์ ํ ๊ตฌ์กฐ ๋ฐฐ์ด์ ์ฌ์ฉํด ๊ตฌํ๋ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด ๋ณด์ #include #include #include // ๋ ธ๋ ์์ฑ typedef struct ArrayListNodeType { intdata; } ArrayListNode; // ๋ฐฐ์ด ๋ฆฌ์คํธ ์ ์ typedef struct ArrayListType { int maxCount;// ์ต๋ ์๋ฃ ๊ฐ์ : ๋ฐฐ์ด์ ํฌ๊ธฐ int currentCount;// ํ์ฌ ์๋ฃ ๊ฐ์ ArrayListNode *pData;// ์๋ฃ ์ ์ฅ์ ์ํ 1์ฐจ์ ๋ฐฐ์ด } ArrayList; // ๋ฐฐ์ด ๋ฆฌ์คํธ ์์ฑ ArrayList *creatList(int count) { if (count maxCount = count..