Skip to content

Latest commit

ย 

History

History
151 lines (128 loc) ยท 3.72 KB

File metadata and controls

151 lines (128 loc) ยท 3.72 KB

๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ

Read this in other languages: ็ฎ€ไฝ“ไธญๆ–‡, ะ ัƒััะบะธะน, ๆ—ฅๆœฌ่ชž, Portuguรชs

์ปดํ“จํ„ฐ๊ณผํ•™์—์„œ, ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ๋ฐ์ดํ„ฐ ์š”์†Œ์˜ ์„ ํ˜• ์ง‘ํ•ฉ์ด๋ฉฐ, ์ด ์ง‘ํ•ฉ์—์„œ ๋…ผ๋ฆฌ์  ์ €์žฅ ์ˆœ์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฌผ๋ฆฌ์  ์ €์žฅ ์ˆœ์„œ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ ๋Œ€์‹ , ๊ฐ๊ฐ์˜ ์›์†Œ๋“ค์€ ์ž๊ธฐ ์ž์‹  ๋‹ค์Œ์˜ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ์ˆœ์„œ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋…ธ๋“œ๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ, ๊ฐ๊ฐ์˜ ๋…ธ๋“œ๋“ค์€ ๋ฐ์ดํ„ฐ์™€ ๋‹ค์Œ ์ˆœ์„œ์˜ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ ˆํผ๋Ÿฐ์Šค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. (๋งํฌ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.) ์ด ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์ˆœํšŒํ•˜๋Š” ๋™์•ˆ ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ํšจ์œจ์ ์ธ ์‚ฝ์ž…์ด๋‚˜ ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋” ๋ณต์žกํ•œ ๋ณ€ํ˜•์€ ์ถ”๊ฐ€์ ์ธ ๋งํฌ๋ฅผ ๋”ํ•ด, ์ž„์˜์˜ ์›์†Œ ์ฐธ์กฐ๋กœ๋ถ€ํ„ฐ ํšจ์œจ์ ์ธ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์˜ ๋‹จ์ ์€ ์ ‘๊ทผ ์‹œ๊ฐ„์ด ์„ ํ˜•์ด๋ผ๋Š” ๊ฒƒ์ด๊ณ , ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๋„ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ž„์˜ ์ ‘๊ทผ์ฒ˜๋Ÿผ ๋น ๋ฅธ ์ ‘๊ทผ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์— ๋น„ํ•ด ๋ฐฐ์—ด์ด ๋” ๋‚˜์€ ์บ์‹œ ์ง€์—ญ์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Linked List

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)

์ฐธ์กฐ