Read this in other languages: ็ฎไฝไธญๆ, ะ ัััะบะธะน, ๆฅๆฌ่ช, Portuguรชs
์ปดํจํฐ๊ณผํ์์, ๋งํฌ๋ ๋ฆฌ์คํธ๋ ๋ฐ์ดํฐ ์์์ ์ ํ ์งํฉ์ด๋ฉฐ, ์ด ์งํฉ์์ ๋ ผ๋ฆฌ์ ์ ์ฅ ์์๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฌผ๋ฆฌ์ ์ ์ฅ ์์์ ์ผ์นํ์ง ์์ต๋๋ค. ๊ทธ ๋์ , ๊ฐ๊ฐ์ ์์๋ค์ ์๊ธฐ ์์ ๋ค์์ ์์๋ฅผ ๊ฐ๋ฆฌํต๋๋ค. ๋งํฌ๋ ๋ฆฌ์คํธ๋ ์์๋ฅผ ํํํ๋ ๋ ธ๋๋ค์ ์งํฉ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ๊ฐ๋จํ๊ฒ, ๊ฐ๊ฐ์ ๋ ธ๋๋ค์ ๋ฐ์ดํฐ์ ๋ค์ ์์์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ ํผ๋ฐ์ค๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. (๋งํฌ๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.) ์ด ์๋ฃ๊ตฌ์กฐ๋ ์ํํ๋ ๋์ ์์์ ์๊ด์์ด ํจ์จ์ ์ธ ์ฝ์ ์ด๋ ์ญ์ ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ๋ ๋ณต์กํ ๋ณํ์ ์ถ๊ฐ์ ์ธ ๋งํฌ๋ฅผ ๋ํด, ์์์ ์์ ์ฐธ์กฐ๋ก๋ถํฐ ํจ์จ์ ์ธ ์ฝ์ ๊ณผ ์ญ์ ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๋งํฌ๋ ๋ฆฌ์คํธ์ ๋จ์ ์ ์ ๊ทผ ์๊ฐ์ด ์ ํ์ด๋ผ๋ ๊ฒ์ด๊ณ , ๋ณ๋ ฌ์ฒ๋ฆฌ๋ ํ์ง ๋ชปํฉ๋๋ค. ์์ ์ ๊ทผ์ฒ๋ผ ๋น ๋ฅธ ์ ๊ทผ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๋งํฌ๋ ๋ฆฌ์คํธ์ ๋นํด ๋ฐฐ์ด์ด ๋ ๋์ ์บ์ ์ง์ญ์ฑ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
Made with okso.app
Add(value)
Pre: ๋ฆฌ์คํธ์ ์ถ๊ฐํ ๊ฐ
Post: ๋ฆฌ์คํธ์ ๋งจ ๋ง์ง๋ง์ ์๋ ๊ฐ
n โ node(value)
if head = รธ
head โ n
tail โ n
else
tail.next โ n
tail โ n
end if
end Add
Prepend(value)
Pre: ๋ฆฌ์คํธ์ ์ถ๊ฐํ ๊ฐ
Post: ๋ฆฌ์คํธ์ ๋งจ ์์ ์๋ ๊ฐ
n โ node(value)
n.next โ head
head โ n
if tail = รธ
tail โ n
end
end Prepend
Contains(head, value)
Pre: head๋ ๋ฆฌ์คํธ์์ ๋งจ ์ ๋
ธ๋
value๋ ์ฐพ๊ณ ์ ํ๋ ๊ฐ
Post: ํญ๋ชฉ์ด ๋งํฌ๋ ๋ฆฌ์คํธ์ ์์ผ๋ฉด true;
์์ผ๋ฉด false
n โ head
while n != รธ and n.value != value
n โ n.next
end while
if n = รธ
return false
end if
return true
end Contains
Remove(head, value)
Pre: head๋ ๋ฆฌ์คํธ์์ ๋งจ ์ ๋
ธ๋
value๋ ์ญ์ ํ๊ณ ์ ํ๋ ๊ฐ
Post: ํญ๋ชฉ์ด ๋งํฌ๋ ๋ฆฌ์คํธ์์ ์ญ์ ๋๋ฉด true;
์์ผ๋ฉด false
if head = รธ
return false
end if
n โ head
if n.value = value
if head = tail
head โ รธ
tail โ รธ
else
head โ head.next
end if
return true
end if
while n.next != รธ and n.next.value != value
n โ n.next
end while
if n.next != รธ
if n.next = tail
tail โ n
end if
n.next โ n.next.next
return true
end if
return false
end Remove
Traverse(head)
Pre: head๋ ๋ฆฌ์คํธ์์ ๋งจ ์ ๋
ธ๋
Post: ์ํ๋ ํญ๋ชฉ๋ค
n โ head
while n != รธ
yield n.value
n โ n.next
end while
end Traverse
ReverseTraversal(head, tail)
Pre: ๊ฐ์ ๋ฆฌ์คํธ์ ๋ค์ด ์๋ ๋งจ ์, ๋งจ ๋ค ๋
ธ๋
Post: ์ญ์ํ๋ ํญ๋ชฉ๋ค
if tail != รธ
curr โ tail
while curr != head
prev โ head
while prev.next != curr
prev โ prev.next
end while
yield curr.value
curr โ prev
end while
yield curr.value
end if
end ReverseTraversal
| ์ ๊ทผ | ํ์ | ์ฝ์ | ์ญ์ |
|---|---|---|---|
| O(n) | O(n) | O(1) | O(n) |
O(n)
