Skip to content

Latest commit

ย 

History

History
92 lines (65 loc) ยท 2.59 KB

File metadata and controls

92 lines (65 loc) ยท 2.59 KB

02. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ(p.139-143)

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

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ

  • ์•„์ฃผ ๊ธฐ๋ณธ์ ์ธ ๋‹จ๋ฐฉํ–ฅ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ

    class Node {
      Node next;
      int data;
      
      public Node(int data) {
        this.data = data;
      }
      
      void appendToTail(int d) {
        Node end = new Node(d);
        Node n = this;
        while (n.next != null) {
          n = n.next;
        }
        n.next = end;
      }
    }

๋‹จ๋ฐฉํ–ฅ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์—์„œ ๋…ธ๋“œ ์‚ญ์ œ

  • ๋‹จ๋ฐฉํ–ฅ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ
    • ๋…ธ๋“œ n์ด ์ฃผ์–ด์ง€๋ฉด, ๊ทธ ์ด์ „ ๋…ธ๋“œ prev๋ฅผ ์ฐพ์•„ prev.next๋ฅผ n.next์™€ ๊ฐ™๋„๋ก ์„ค์ •ํ•œ๋‹ค.
  • ์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ
    • n.next๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋…ธ๋“œ๋ฅผ ๊ฐฑ์‹ ํ•˜์—ฌ n.next.prev๊ฐ€ n.prev์™€ ๊ฐ™๋„๋ก ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.
    • ์ฃผ์˜์‚ฌํ•ญ
      1. ๋„ ํฌ์ธํ„ฐ ๊ฒ€์‚ฌ๋ฅผ ๋ฐ˜๋“œ์‹œ ํ•ด์•ผ ํ•œ๋‹ค.
      2. ํ•„์š”ํ•˜๋ฉด head์™€ tail ํฌ์ธํ„ฐ๋„ ๊ฐฑ์‹ ํ•ด์•ผ ํ•œ๋‹ค.
Node deleteNode(Node head, int d) {
  Node n = head;
  if (n.data == d) {
    return head.next; // head๋ฅผ ์›€์ง์ธ๋‹ค.
  }
  
  while (n.next != null) {
    if (n.next.data == d) {
      n.next = n.next.next;
      return head; // head๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.
    }
    n = n.next;
  }
  return head;
}

Runner ๊ธฐ๋ฒ•

  • Runner(๋ถ€๊ฐ€ ํฌ์ธํ„ฐ)
    • ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ๋ฌธ์ œ์—์„œ ๋งŽ์ด ํ™œ์šฉ๋˜๋Š” ๊ธฐ๋ฒ•
    • ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํšŒํ•  ๋•Œ ๋‘ ๊ฐœ์˜ ํฌ์ธํ„ฐ๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋•Œ ํ•œ ํฌ์ธํ„ฐ๊ฐ€ ๋‹ค๋ฅธ ํฌ์ธํ„ฐ๋ณด๋‹ค ์•ž์„œ๋„๋ก ํ•œ๋‹ค. ์•ž์„  ํฌ์ธํ„ฐ๊ฐ€ ๋”ฐ๋ผ์˜ค๋Š” ํฌ์ธํ„ฐ๋ณด๋‹ค ํ•ญ์ƒ ์ง€์ •๋œ ๊ฐœ์ˆ˜๋งŒํผ์„ ์•ž์„œ๋„๋ก ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์•„๋‹ˆ๋ฉด ๋”ฐ๋ผ์˜ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๋…ธ๋“œ๋ฅผ ํ•œ ๋ฒˆ์— ๋›ฐ์–ด๋„˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์žฌ๊ท€ ๋ฌธ์ œ

  • ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ๊ด€๋ จ ๋ฌธ์ œ ๊ฐ€์šด๋ฐ ์ƒ๋‹น์ˆ˜๋Š” ์žฌ๊ท€ ํ˜ธ์ถœ์— ์˜์กดํ•œ๋‹ค.
  • ํ•˜์ง€๋งŒ ์žฌ๊ท€ ํ˜ธ์ถœ ๊นŠ์ด๊ฐ€ n์ด ๋  ๊ฒฝ์šฐ, ํ•ด๋‹น ์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ ์–ด๋„ O(n) ๋งŒํผ์˜ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ธฐ์–ตํ•˜์ž.

๋ฉด์ ‘ ๋ฌธ์ œ

  1. ์ค‘๋ณต ์—†์• ๊ธฐ
  2. ๋’ค์—์„œ k๋ฒˆ์งธ ์›์†Œ ๊ตฌํ•˜๊ธฐ
  3. ์ค‘๊ฐ„ ๋…ธ๋“œ ์‚ญ์ œ
  4. ๋ถ„ํ• 
  5. ๋ฆฌ์ŠคํŠธ์˜ ํ•ฉ
  6. ํšŒ๋ฌธ
  7. ๊ต์ง‘ํ•ฉ
  8. ๋ฃจํ”„ ๋ฐœ๊ฒฌ