๋ชฉ๋ก์ž๋ฃŒ๊ตฌ์กฐ (6)

๐Ÿ’ก

์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ํ™•์žฅ Circular linked list, Double linked list

๊ณตํ†ต์  ์ฐจ์ด์  ๋‹จ์ˆœ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ ์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๊ฐ€ ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ์–‘๋ฐฉํ–ฅ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋–„๋ฌธ์—, ํŠน์ • ๋…ธ๋“œ ์ด์ „ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ง์ ‘ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅ ์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ : ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๊ฐ€ ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ, ๋‹จ์ˆœ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹จ๋ฐฉํ–ฅ ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ : ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๊ฐ€ ํ—ค๋”๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ, ์–‘๋ฐฉํ–ฅ - ๋…ธ๋“œ์˜ ์ด์ „ ๋…ธ๋“œ์˜ ๋‹ค์Œ ๋…ธ๋“œ == ๋…ธ๋“œ์˜ ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ด์ „๋…ธ๋“œ == ๋…ธ๋“œ ์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ #include #include #include typedef struct CircularListNodeType { int data; struct CircularListNodeType *pLink; } CircularListNode;..

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ Linked list

๊ตฌ๋ถ„ ๊ตฌํ˜„ ๋ฐฉ์‹ ์ˆœ์ฐจ์  ์ €์žฅ์„ ๊ตฌํ˜„ํ•œ ๋ฐฉ๋ฒ• ์ž๋ฃŒ ์ ‘๊ทผ ์†๋„ ๊ตฌํ˜„ ๋ณต์žก๋„ ๋ฐฐ์—ด ๋ฆฌ์ŠคํŠธ ๋ฐฐ์—ด ๋ฌผ๋ฆฌ์  ์ €์žฅ ์ˆœ์„œ๊ฐ€ ์ˆœ์ฐจ์  ๋น ๋ฆ„ O(1) ๋‚ฎ์Œ ์ตœ๋Œ€ ์ €์žฅ ๊ฐœ์ˆ˜ ํ•„์š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ํฌ์ธํ„ฐ ๋…ผ๋ฆฌ์  ์ €์žฅ ์ˆœ์„œ๊ฐ€ ์ˆœ์ฐจ์  ๋А๋ฆผ O(n) ๋†’์€ ๋ฐฐ์—ด๋ฆฌ์ŠคํŠธ๋Š” ํŠน์ • ์ธ๋ฑ์Šค์— ๋ฐ”๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฃŒ์ ‘๊ทผ ์†๋„๊ฐ€ O(1)์ด๊ณ  ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋Š” ํ—ค๋”๋…ธ๋“œ๋ถ€ํ„ฐ ํฌ์ธํ„ฐ๋กœ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— n๋ฒˆ์งธ ์ž๋ฃŒ์— ์ ‘๊ทผํ•˜๋ ค๋ฉด O(n) -- ๋‹ค๋งŒ ๋ฐฐ์—ด๋ฆฌ์ŠคํŠธ๋Š” ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€, ์‚ญ์ œ ํ•˜๋ ค๋ฉด ์ถ”๊ฐ€, ์‚ญ์ œํ•˜๋ ค๋Š” ๋…ธ๋“œ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์ด๋™์‹œ์ผœ์•ผํ•ด์„œ ์ž๋ฃŒ์˜ ์ถ”๊ฐ€ ์‚ญ์ œ๊ฐ€ ๋งŽ์œผ๋ฉด ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœ -์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ๋…ธ๋“œ ๊ตฌ์กฐ : ์ž๋ฃŒ + ์—ฐ๊ฒฐ ์ •๋ณด(๋งํฌ) -์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์˜ ๋งํฌ = NULL #include #includ..