Skip to content

Latest commit

ย 

History

History
95 lines (78 loc) ยท 3.19 KB

File metadata and controls

95 lines (78 loc) ยท 3.19 KB

ๅŒๆ–นๅ‘ใƒชใ‚นใƒˆ

ใ‚ณใƒณใƒ”ใƒฅใƒผใ‚ฟใ‚ตใ‚คใ‚จใƒณใ‚นใซใŠใ„ใฆใ€ๅŒๆ–นๅ‘ใƒชใ‚นใƒˆใฏใƒŽใƒผใƒ‰ใจๅ‘ผใฐใ‚Œใ‚‹ไธ€้€ฃใฎใƒชใƒณใ‚ฏใƒฌใ‚ณใƒผใƒ‰ใ‹ใ‚‰ใชใ‚‹้€ฃ็ตใƒ‡ใƒผใ‚ฟๆง‹้€ ใงใ™ใ€‚ๅ„ใƒŽใƒผใƒ‰ใฏใƒชใƒณใ‚ฏใจๅ‘ผใฐใ‚Œใ‚‹2ใคใฎใƒ•ใ‚ฃใƒผใƒซใƒ‰ใ‚’ๆŒใฃใฆใ„ใฆใ€ใ“ใ‚Œใ‚‰ใฏไธ€้€ฃใฎใƒŽใƒผใƒ‰ๅ†…ใซใŠใ‘ใ‚‹ๅ‰ใฎใƒŽใƒผใƒ‰ใจๆฌกใฎใƒŽใƒผใƒ‰ใ‚’ๅ‚็…งใ—ใฆใ„ใพใ™ใ€‚ๆœ€ๅˆใฎใƒŽใƒผใƒ‰ใฎๅ‰ใฎใƒชใƒณใ‚ฏใจๆœ€ๅพŒใฎใƒŽใƒผใƒ‰ใฎๆฌกใฎใƒชใƒณใ‚ฏใฏใ‚ใ‚‹็จฎใฎ็ต‚็ซฏใ‚’็คบใ—ใฆใ„ใฆใ€ไธ€่ˆฌ็š„ใซใฏใƒ€ใƒŸใƒผใƒŽใƒผใƒ‰ใ‚„nullใŒๆ ผ็ดใ•ใ‚Œใ€ใƒชใ‚นใƒˆใฎใƒˆใƒฉใƒใƒผใ‚นใ‚’ๅฎนๆ˜“ใซ่กŒใˆใ‚‹ใ‚ˆใ†ใซใ—ใฆใ„ใพใ™ใ€‚ใ‚‚ใ—ใƒ€ใƒŸใƒผใƒŽใƒผใƒ‰ใŒ1ใคใ—ใ‹ใชใ„ๅ ดๅˆใ€ใƒชใ‚นใƒˆใฏใใฎ1ใคใฎใƒŽใƒผใƒ‰ใ‚’ไป‹ใ—ใฆๅพช็’ฐ็š„ใซใƒชใƒณใ‚ฏใ•ใ‚Œใพใ™ใ€‚ใ“ใ‚Œใฏใ€ใใ‚Œใžใ‚Œ้€†ใฎ้ †็•ชใฎๅ˜ๆ–นๅ‘ใฎใƒชใƒณใ‚ฏใƒชใ‚นใƒˆใŒ2ใคใ‚ใ‚‹ใ‚‚ใฎใจใ—ใฆ่€ƒใˆใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚

Doubly Linked List

2ใคใฎใƒชใƒณใ‚ฏใซใ‚ˆใ‚Šใ€ใƒชใ‚นใƒˆใ‚’ใฉใกใ‚‰ใฎๆ–นๅ‘ใซใ‚‚ใƒˆใƒฉใƒใƒผใ‚นใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚ๅŒๆ–นๅ‘ใƒชใ‚นใƒˆใฏใƒŽใƒผใƒ‰ใฎ่ฟฝๅŠ ใ‚„ๅ‰Š้™คใฎ้š›ใซใ€็‰‡ๆ–นๅ‘ใƒชใƒณใ‚ฏใƒชใ‚นใƒˆใจๆฏ”ในใฆใ‚ˆใ‚Šๅคšใใฎใƒชใƒณใ‚ฏใ‚’ๅค‰ๆ›ดใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚ใ—ใ‹ใ—ใ€ใใฎๆ“ไฝœใฏ็ฐกๅ˜ใงใ€ใ‚ˆใ‚ŠๅŠน็އ็š„ใช(ๆœ€ๅˆใฎใƒŽใƒผใƒ‰ไปฅๅค–ใฎๅ ดๅˆ)ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™ใ€‚ๅ‰ใฎใƒŽใƒผใƒ‰ใฎใƒชใƒณใ‚ฏใ‚’ๆ›ดๆ–ฐใ™ใ‚‹้š›ใซๅ‰ใฎใƒŽใƒผใƒ‰ใ‚’ไฟๆŒใ—ใŸใ‚Šใ€ๅ‰ใฎใƒŽใƒผใƒ‰ใ‚’่ฆ‹ใคใ‘ใ‚‹ใŸใ‚ใซใƒชใ‚นใƒˆใ‚’ใƒˆใƒฉใƒใƒผใ‚นใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ›ใ‚“ใ€‚

ๅŸบๆœฌๆ“ไฝœใฎๆ“ฌไผผใ‚ณใƒผใƒ‰

ๆŒฟๅ…ฅ

Add(value)
  Pre: value is the value to add to the list
  Post: value has been placed at the tail of the list
  n โ† node(value)
  if head = รธ
    head โ† n
    tail โ† n
  else
    n.previous โ† tail
    tail.next โ† n
    tail โ† n
  end if
end Add

ๅ‰Š้™ค

Remove(head, value)
  Pre: head is the head node in the list
       value is the value to remove from the list
  Post: value is removed from the list, true; otherwise false
  if head = รธ
    return false
  end if
  if value = head.value
    if head = tail
      head โ† รธ
      tail โ† รธ
    else
      head โ† head.next
      head.previous โ† รธ
    end if
    return true
  end if
  n โ† head.next
  while n = รธ and value !== n.value
    n โ† n.next
  end while
  if n = tail
    tail โ† tail.previous
    tail.next โ† รธ
    return true
  else if n = รธ
    n.previous.next โ† n.next
    n.next.previous โ† n.previous
    return true
  end if
  return false
end Remove

้€†ใƒˆใƒฉใƒใƒผใ‚น

ReverseTraversal(tail)
  Pre: tail is the node of the list to traverse
  Post: the list has been traversed in reverse order
  n โ† tail
  while n = รธ
    yield n.value
    n โ† n.previous
  end while
end Reverse Traversal

่จˆ็ฎ—้‡

ๆ™‚้–“่จˆ็ฎ—้‡

Access Search Insertion Deletion
O(n) O(n) O(1) O(n)

็ฉบ้–“่จˆ็ฎ—้‡

O(n)

ๅ‚่€ƒ