DEV Community

Cover image for LinkedList in JavaScript
bappasaha
bappasaha

Posted on

LinkedList in JavaScript

đŸ”Ĩ00- Linked List in JavaScript

  • How to Create Node
  • Create Linked List
  • Performed Push( ), | O(1) | add node at the end
  • Performed Pop( ), | O(n) | remove Node at the end
  • Performed Unshift( ), | O(1) | add Node at the start
  • Performed shift( ), | O(1) | remove Node at the start
  • Performed get| set
  • Performed Insert **| **Remove at any Node and Reverse Linked List
đŸ”Ĩ01- Linked List āĻāĻŦāĻ‚ Array
<br>
Enter fullscreen mode Exit fullscreen mode

đŸ”Ĩ01- Linked List āĻāĻŦāĻ‚ Array

āĻāϟāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāĻĨāĻŽ āĻĄā§‡āϟāĻž āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āϝāĻž āφāĻŽāϰāĻž āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āϝāĻžāĻšā§āĻ›āĻŋ, āϝāĻž āĻ•āĻŋāϛ⧁āϟāĻž important. āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāϚāϝāĻŧ āĻ•āϰāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ, āφāĻŽāĻŋ āĻāϟāĻŋ āϏ⧇āχ āĻĄā§‡āϟāĻž āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ āϤ⧁āϞāύāĻž āĻ•āϰāĻŦ āϝāĻž āĻāϟāĻŋ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ āϤ⧁āϞāύāĻž āĻ•āϰāĻž āĻšāϝāĻŧ, āĻāĻŦāĻ‚ āϤāĻž āĻšāϞ āĻ…ā§āϝāĻžāϰ⧇āĨ¤

āĻ…ā§āϝāĻžāϰ⧇āϰ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

  • index: āĻ…ā§āϝāĻžāϰ⧇āϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ index āĻĨāĻžāϕ⧇, āϝāĻž āĻĒā§āϰāϤāĻŋāϟāĻŋ āωāĻĒāĻžāĻĻāĻžāύāϕ⧇ āϚāĻŋāĻšā§āύāĻŋāϤ āĻ•āϰ⧇āĨ¤
  • āĻŽā§‡āĻŽāϰāĻŋāϤ⧇ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ: āĻ…ā§āϝāĻžāϰ⧇ āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻŽā§‡āĻŽāϰāĻŋāϤ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āĻšāϝāĻŧāĨ¤

āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

  • index: āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟāϗ⧁āϞāĻŋāϰ āϕ⧋āύāĻ“ āϏ⧂āϚāĻ• āύ⧇āχāĨ¤
  • āĻŽā§‡āĻŽāϰāĻŋāϤ⧇ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ: āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋ āĻŽā§‡āĻŽāϰāĻŋāϤ⧇ āϝ⧇āϕ⧋āύ⧋ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āĻāϟāĻŋ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻ• āύāϝāĻŧāĨ¤

āĻ—ā§āϰāĻžāĻĢāĻŋāĻ•āĻžāϞ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ

āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋāϕ⧇ āĻ—ā§āϰāĻžāĻĢāĻŋāĻ•ā§āϝāĻžāϞāĻ­āĻžāĻŦ⧇ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž āϏāĻŦ⧁āϜ āĻŦāĻ°ā§āĻ—āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻŦ⧇āϗ⧁āύāĻŋ āĻŦ⧃āĻ¤ā§āϤ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦāĨ¤
🔂 🔂 🔂

  • Head and Tail: āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡ āĻāĻ•āϟāĻŋ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻĨāĻžāϕ⧇ āϝāĻžāϕ⧇ "āĻšā§‡āĻĄ" āĻŦāϞāĻž āĻšāϝāĻŧ, āϝāĻž āĻĒā§āϰāĻĨāĻŽ āφāχāĻŸā§‡āĻŽāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇, āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ "āĻŸā§‡āχāϞ" āĻĨāĻžāϕ⧇, āϝāĻž āĻļ⧇āώ āφāχāĻŸā§‡āĻŽāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇āĨ¤
  • āϞāĻŋāĻ™ā§āĻ•: āĻĒā§āϰāϤāĻŋāϟāĻŋ āφāχāĻŸā§‡āĻŽ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āφāχāĻŸā§‡āĻŽā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇, āĻāĻŦāĻ‚ āĻļ⧇āώ āφāχāĻŸā§‡āĻŽāϟāĻŋ null āĻāϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇āĨ¤ āϤāĻžāχ āφāĻĒāύāĻŋ "null terminated list" āĻļāĻŦā§āĻĻāϟāĻŋ āĻļ⧁āύāϤ⧇ āĻĒāĻžāĻŦ⧇āύāĨ¤

āϏāĻžāϰāϏāĻ‚āĻ•ā§āώ⧇āĻĒ

āĻ…ā§āϝāĻžāϰ⧇āϗ⧁āϞāĻŋ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻŽā§‡āĻŽāϰāĻŋāϤ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āĻšāϝāĻŧ, āϝ⧇āĻ–āĻžāύ⧇ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟāϗ⧁āϞāĻŋ āϝ⧇āϕ⧋āύ⧋ āĻ¸ā§āĻĨāĻžāύ⧇ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāχ āϤ⧁āϞāύāĻžāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āφāĻŽāϰāĻž āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟ āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāϰ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻŽā§ŒāϞāĻŋāĻ• āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝāϗ⧁āϞāĻŋ āĻŦ⧁āĻāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤

đŸ”Ĩ02- āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟ āĻāĻŦāĻ‚ āĻŦāĻŋāĻ— āĻ“ (Big O)
<br>
Enter fullscreen mode Exit fullscreen mode

đŸ”Ĩ02- āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟ āĻāĻŦāĻ‚ āĻŦāĻŋāĻ— āĻ“ (Big O)

āĻāϟāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāĻĨāĻŽ āĻĄā§‡āϟāĻž āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āϝāĻž āφāĻŽāϰāĻž āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āϝāĻžāĻšā§āĻ›āĻŋ, āĻāχ āϏ⧇āĻ•āĻļāύ⧇, āφāĻŽāϰāĻž āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ…āĻĒāĻžāϰ⧇āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āĻŦāĻŋāĻ— āĻ“ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ āĻ•āϰāĻŦāĨ¤

✅ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡ āύ⧋āĻĄ āϝ⧋āĻ— āĻ•āϰāĻž

āϧāϰāĻŋ, āφāĻŽāĻžāĻĻ⧇āϰ āĻāĻ•āϟāĻŋ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟ āφāϛ⧇ āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āύ⧋āĻĄ (ā§Ē) āϝ⧋āĻ— āĻ•āϰāϤ⧇ āϝāĻžāĻšā§āĻ›āĻŋāĨ¤

  • āύāϤ⧁āύ āύ⧋āĻĄ āϝ⧋āĻ— āĻ•āϰāĻž:
    • āύāϤ⧁āύ āύ⧋āĻĄāϟāĻŋ āĻļ⧇āώ⧇āϰ āĻĻāĻŋāϕ⧇ āϝ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻšāϞ⧇, āφāĻŽāĻžāĻĻ⧇āϰ āĻļ⧇āώ āύ⧋āĻĄāϟāĻŋ (tail) āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤
    • āĻāϟāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž tail āϕ⧇ āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāϤ āĻ•āϰāĻŋāĨ¤
    • āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ§ā§āϰ⧁āĻŦāĻ• āϏāĻŽāϝāĻŧ (O(1))āĨ¤

✅ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟ āĻĨ⧇āϕ⧇ āύ⧋āĻĄ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž

  • āĻļ⧇āώ āĻĨ⧇āϕ⧇ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž:
    • āĻļ⧇āώ āύ⧋āĻĄāϟāĻŋ āĻŽā§āϛ⧇ āĻĢ⧇āϞāϤ⧇ āĻšāϞ⧇, āφāĻŽāĻžāĻĻ⧇āϰ āĻļ⧇āώ⧇āϰ āĻĻāĻŋāϕ⧇ (tail) āϝāĻžāĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āĻĒ⧁āϰ⧋ āϞāĻŋāĻ¸ā§āϟāϟāĻŋ āĻĒāĻžāϰ āĻšāϤ⧇ āĻšāĻŦ⧇āĨ¤
    • āϤāĻžāχ, āĻāϟāĻŋ O(n)āĨ¤

āĻļ⧁āϰ⧁ āĻĨ⧇āϕ⧇ āύ⧋āĻĄ āϝ⧋āĻ— āĻ•āϰāĻž

  • āĻļ⧁āϰ⧁āϰ āĻĻāĻŋāϕ⧇ āϝ⧋āĻ— āĻ•āϰāĻž:
    • āύāϤ⧁āύ āύ⧋āĻĄāϟāĻŋ āϝ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻšāϞ⧇, āĻšā§‡āĻĄāϕ⧇ āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤
    • āĻāϟāĻŋ O(1)āĨ¤

āĻļ⧁āϰ⧁ āĻĨ⧇āϕ⧇ āύ⧋āĻĄ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž

  • āĻļ⧁āϰ⧁ āĻĨ⧇āϕ⧇ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž:
    • āĻšā§‡āĻĄāϕ⧇ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤
    • āĻāϟāĻŋ O(1)āĨ¤

āĻŽāĻ§ā§āϝāĻŦāĻ°ā§āϤ⧀ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ⧇ āχāύāϏāĻžāĻ°ā§āϟ āĻ•āϰāĻž

  • āĻŽāĻ§ā§āϝāĻŦāĻ°ā§āϤ⧀ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ⧇ āχāύāϏāĻžāĻ°ā§āϟ āĻ•āϰāĻž:
    • āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āχāύāĻĄā§‡āĻ•ā§āϏ⧇ āχāύāϏāĻžāĻ°ā§āϟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāĻžāĻĻ⧇āϰ āĻšā§‡āĻĄ āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āĻĒ⧁āϰ⧋ āϞāĻŋāĻ¸ā§āϟāϟāĻŋ āĻĒāĻžāϰ āĻšāϤ⧇ āĻšāĻŦ⧇āĨ¤
    • āϤāĻžāχ, āĻāϟāĻŋ O(n)āĨ¤

āĻŽāĻ§ā§āϝāĻŦāĻ°ā§āϤ⧀ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ⧇ āφāχāĻŸā§‡āĻŽ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž

  • āĻŽāĻ§ā§āϝāĻŦāĻ°ā§āϤ⧀ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ⧇ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž:
    • āĻāĻ•āχāĻ­āĻžāĻŦ⧇, āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āχāύāĻĄā§‡āĻ•ā§āϏ⧇ āφāχāĻŸā§‡āĻŽ āĻŽā§āϛ⧇ āĻĢ⧇āϞāϤ⧇ āĻšāϞ⧇, āĻĒ⧁āϰ⧋ āϞāĻŋāĻ¸ā§āϟāϟāĻŋ āĻĒāĻžāϰ āĻšāϤ⧇ āĻšāĻŦ⧇āĨ¤
    • āϤāĻžāχ, āĻāϟāĻŋ O(n)āĨ¤

āφāχāĻŸā§‡āĻŽ āĻ–ā§‹āρāϜāĻž

  • āĻŽāĻžāύ āĻĻā§āĻŦāĻžāϰāĻž āĻ–ā§‹āρāϜāĻž:

    • āϝāĻĻāĻŋ āφāĻŽāϰāĻž āĻŽāĻžāύ āĻĻā§āĻŦāĻžāϰāĻž āϖ⧁āρāϜāϤ⧇ āϚāĻžāχ, āϤāĻžāĻšāϞ⧇ āĻšā§‡āĻĄ āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āĻĒ⧁āϰ⧋ āϞāĻŋāĻ¸ā§āϟāϟāĻŋ āĻĒāĻžāϰ āĻšāϤ⧇ āĻšāĻŦ⧇āĨ¤
    • āĻāϟāĻŋ O(n)āĨ¤
  • āχāύāĻĄā§‡āĻ•ā§āϏ āĻĻā§āĻŦāĻžāϰāĻž āĻ–ā§‹āρāϜāĻž:

    • āχāύāĻĄā§‡āĻ•ā§āϏ āĻĻā§āĻŦāĻžāϰāĻž āϖ⧁āρāϜāϤ⧇ āĻšāϞ⧇, āφāĻŦāĻžāϰāĻ“ āĻšā§‡āĻĄ āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āĻĒ⧁āϰ⧋ āϞāĻŋāĻ¸ā§āϟāϟāĻŋ āĻĒāĻžāϰ āĻšāϤ⧇ āĻšāĻŦ⧇āĨ¤
    • āϤāĻžāχ, āĻāϟāĻŋ O(n)āĨ¤
  • Push Pop works in Tail part add or remove

  • unshift works in the Head part add or remove

āĻ…ā§āϝāĻžāϰ⧇ āĻāĻŦāĻ‚ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āϤ⧁āϞāύāĻž

āĻ…āĻĒāĻžāϰ⧇āĻļāύ āĻ…ā§āϝāĻžāϰ⧇ (Array) āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟ (Linked List)
āĻļ⧇āώ āĻĨ⧇āϕ⧇ POP āĻ•āϰāĻž O(1) O(n)
āχāύāĻĄā§‡āĻ•ā§āϏ āĻĻā§āĻŦāĻžāϰāĻž āĻ–ā§‹āρāϜāĻž O(1) O(n)
āĻļ⧁āϰ⧁āϤ⧇ āϝ⧋āĻ— āĻ•āϰāĻž O(n) O(1)
āĻļ⧁āϰ⧁āϤ⧇ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž O(n) O(1)
āĻŽāĻ§ā§āϝāĻŦāĻ°ā§āϤ⧀ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ⧇ āϝ⧋āĻ— āĻ•āϰāĻž O(n) O(n)
āĻŽāĻ§ā§āϝāĻŦāĻ°ā§āϤ⧀ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ⧇ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž O(n) O(n)

āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻĻā§āϰ⧁āϤ āĻĒāĻ°ā§āϝāĻžāϞ⧋āϚāύāĻž āĻ›āĻŋāϞ āϝ⧇ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟ āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāϰ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ…āĻĒāĻžāϰ⧇āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āĻŦāĻŋāĻ— āĻ“ āĻŦāĻŋāĻļā§āϞ⧇āώāϪ⧇ āĻ­āĻŋāĻ¨ā§āύāĨ¤

let myLinkedList = new LinkedList(23); // āĻĒā§āϰāĻĨāĻŽ āύ⧋āĻĄā§‡āϰ āĻŽāĻžāύ 23 āĻĻāĻŋāϝāĻŧ⧇ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰ⧇
myLinkedList.push(7); // āĻļ⧇āώ⧇ 7 āϝ⧋āĻ— āĻ•āϰ⧇  | O(1)
myLinkedList.unshift(3); // āĻļ⧁āϰ⧁āϤ⧇ 3 āϝ⧋āĻ— āĻ•āϰ⧇
myLinkedList.insertAt(1, 11); // āϏ⧂āϚāĻ• 1 āĻ 11 āϏāĻ¨ā§āύāĻŋāĻŦ⧇āĻļ āĻ•āϰ⧇
myLinkedList.remove(1); // āϏ⧂āϚāĻ• 1 āĻĨ⧇āϕ⧇ āφāχāĻŸā§‡āĻŽ āĻ…āĻĒāϏāĻžāϰāĻŖ āĻ•āϰ⧇ (11)
Enter fullscreen mode Exit fullscreen mode
class LinkedList {
  constructor(value) {
    this.head = { value: value, next: null }; // āĻšā§‡āĻĄ āύ⧋āĻĄ āĻļ⧁āϰ⧁ āĻ•āϰāĻž
    this.length = 1; // āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻŸā§āĻ°ā§āϝāĻžāĻ• āĻ•āϰāĻž
  }

  push(value) {
    // āĻļ⧇āώ⧇āϰ āĻĻāĻŋāϕ⧇ āύāϤ⧁āύ āύ⧋āĻĄ āϝ⧋āĻ— āĻ•āϰāĻžāϰ āĻŽā§‡āĻĨāĻĄ
  }

  unshift(value) {
    // āĻļ⧁āϰ⧁āϤ⧇ āύāϤ⧁āύ āύ⧋āĻĄ āϝ⧋āĻ— āĻ•āϰāĻžāϰ āĻŽā§‡āĻĨāĻĄ
  }

  insertAt(index, value) {
    // āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏ⧂āϚāϕ⧇ āĻāĻ•āϟāĻŋ āύ⧋āĻĄ āϏāĻ¨ā§āύāĻŋāĻŦ⧇āĻļ āĻ•āϰāĻžāϰ āĻŽā§‡āĻĨāĻĄ
  }

  remove(index) {
    // āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏ⧂āϚāĻ• āĻĨ⧇āϕ⧇ āĻāĻ•āϟāĻŋ āύ⧋āĻĄ āĻ…āĻĒāϏāĻžāϰāĻŖ āĻ•āϰāĻžāϰ āĻŽā§‡āĻĨāĻĄ
  }

  pop() {
    // āĻļ⧇āώ āύ⧋āĻĄ āĻ…āĻĒāϏāĻžāϰāĻŖ āĻ•āϰāĻžāϰ āĻŽā§‡āĻĨāĻĄ
  }

  shift() {
    // āĻĒā§āϰāĻĨāĻŽ āύ⧋āĻĄ āĻ…āĻĒāϏāĻžāϰāĻŖ āĻ•āϰāĻžāϰ āĻŽā§‡āĻĨāĻĄ
  }
}
Enter fullscreen mode Exit fullscreen mode
đŸ”Ĩ03- āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āĻ…āĻ¨ā§āϤāĻ°ā§āύāĻŋāĻšāĻŋāϤ āĻ—āĻ āύ
<br>
Enter fullscreen mode Exit fullscreen mode

đŸ”Ĩ03- āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ Internal Structure

āĻāĻ–āύ āφāĻŽāϰāĻž āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āĻ…āĻ¨ā§āϤāĻ°ā§āύāĻŋāĻšāĻŋāϤ āĻ—āĻ āύ āύāĻŋāϝāĻŧ⧇ āφāϞ⧋āϚāύāĻž āĻ•āϰāĻŦāĨ¤ āφāϏ⧁āύ āĻĻ⧇āĻ–āĻŋ āĻāϟāĻŋ āφāϏāϞ⧇ āϕ⧀āĻ­āĻžāĻŦ⧇ āϤ⧈āϰāĻŋ āĻšāϝāĻŧāĨ¤

āύ⧋āĻĄā§‡āϰ āĻ—āĻ āύ

āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āĻĒā§āϰāϤāĻŋāϟāĻŋ āωāĻĒāĻžāĻĻāĻžāύāϕ⧇ āύ⧋āĻĄ āĻŦāϞāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ āύ⧋āĻĄā§‡ āĻĻ⧁āϟāĻŋ āĻĒā§āϰāϧāĻžāύ āωāĻĒāĻžāĻĻāĻžāύ āĻĨāĻžāϕ⧇:

  1. āĻŽāĻžāύ (Value): āĻāϟāĻŋ āύ⧋āĻĄā§‡āϰ āĻŽā§‚āϞ āϤāĻĨā§āϝāĨ¤
  2. āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ (Pointer): āĻāϟāĻŋ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡āϰ āĻ āĻŋāĻ•āĻžāύāĻžāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇āĨ¤

āĻāĻ•āϟāĻŋ āύ⧋āĻĄā§‡āϰ āĻ—āĻ āύ āύāĻŋāĻšā§‡āϰ āĻŽāϤ⧋ āĻšāϤ⧇ āĻĒāĻžāϰ⧇:

{
    value: 7,
    next: 
}
Enter fullscreen mode Exit fullscreen mode

āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡ āύ⧋āĻĄ āϝ⧋āĻ— āĻ•āϰāĻž

āϝāĻ–āύ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āύ⧋āĻĄ (āϝ⧇āĻŽāύ ā§Ē) āϝ⧋āĻ— āĻ•āϰāĻŋ, āϤāĻ–āύ āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāĻĨāĻŽā§‡ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϝ⧇ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄ (āϝ⧇āĻŽāύ ā§­) āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž ā§­ āĻāϰ next āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϕ⧇ āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻ āĻŋāĻ•āĻžāύāĻžāϝāĻŧ āϏ⧇āϟ āĻ•āϰāĻŋāĨ¤

node7.next = node4; // ā§­ āύ⧋āĻĄāϟāĻŋ ā§Ē āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āύ, tail āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋāĻ“ āύāϤ⧁āύ āύ⧋āĻĄ (ā§Ē) āĻāϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŦ⧇āĨ¤

āĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ

  • āĻšā§‡āĻĄ (Head): āĻāϟāĻŋ āĻĒā§āϰāĻĨāĻŽ āύ⧋āĻĄāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇āĨ¤
  • āĻŸā§‡āχāϞ (Tail): āĻāϟāĻŋ āĻļ⧇āώ āύ⧋āĻĄāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻāϟāĻŋ āϏāĻ°ā§āĻŦāĻĻāĻž āĻļ⧇āώ⧇āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāϤ āĻĨāĻžāϕ⧇āĨ¤

āĻ—ā§āϰāĻžāĻĢāĻŋāĻ•ā§āϝāĻžāϞ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ

āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟāϕ⧇ āĻ—ā§āϰāĻžāĻĢāĻŋāĻ•ā§āϝāĻžāϞāĻ­āĻžāĻŦ⧇ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāϤ⧇, āφāĻŽāϰāĻž āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāĻ•āϟāĻŋ āĻĄāĻžāϝāĻŧāĻžāĻ—ā§āϰāĻžāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋ āϝ⧇āĻ–āĻžāύ⧇ āĻĒā§āϰāϤāĻŋāϟāĻŋ āύ⧋āĻĄ āĻāĻ•āϟāĻŋ āĻŦ⧃āĻ¤ā§āϤ⧇ āϚāĻŋāĻ¤ā§āϰāĻŋāϤ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϗ⧁āϞāĻŋ āϤ⧀āϰ āĻĻā§āĻŦāĻžāϰāĻž āϚāĻŋāĻšā§āύāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤

āωāĻĻāĻžāĻšāϰāĻŖ

āύāĻŋāĻšā§‡ āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϞ āϝ⧇āĻ–āĻžāύ⧇ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāĻ›āĻŋ:

class Node {
  constructor(value) {
    this.value = value;
    this.next = null; // āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ
  }
}

class LinkedList {
  constructor() {
    this.head = null; // āĻĒā§āϰāĻĨāĻŽ āύ⧋āĻĄ
    this.tail = null; // āĻļ⧇āώ āύ⧋āĻĄ
  }

  add(value) {
    const newNode = new Node(value);
    if (!this.head) {
      this.head = newNode;
      this.tail = newNode;
    } else {
      this.tail.next = newNode; // āĻļ⧇āώ āύ⧋āĻĄā§‡āϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϏ⧇āϟ āĻ•āϰāĻž
      this.tail = newNode; // āĻŸā§‡āχāϞ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

āωāĻĒāϏāĻ‚āĻšāĻžāϰ

āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟ āĻšāϞ āĻāĻ•āϟāĻŋ āĻĄāĻžāχāύāĻžāĻŽāĻŋāĻ• āĻĄā§‡āϟāĻž āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āϝāĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϧāϰāύ⧇āϰ āĻ…āĻĒāĻžāϰ⧇āĻļāύ āϏāĻŽā§āĻĒāĻžāĻĻāύ⧇āϰ āϜāĻ¨ā§āϝ āϖ⧁āĻŦāχ āĻ•āĻžāĻ°ā§āϝāĻ•āϰāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻŋ āύ⧋āĻĄā§‡ āϤāĻĨā§āϝ āĻāĻŦāĻ‚ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡āϰ āĻ āĻŋāĻ•āĻžāύāĻž āĻĨāĻžāϕ⧇, āϝāĻž āφāĻŽāĻžāĻĻ⧇āϰāϕ⧇ āϏāĻšāĻœā§‡āχ āύāϤ⧁āύ āωāĻĒāĻžāĻĻāĻžāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻāĻŦāĻ‚ āĻŽā§āϛ⧇ āĻĢ⧇āϞāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āĻāχ āĻ—āĻ āύāϟāĻŋ āφāĻŽāĻžāĻĻ⧇āϰāϕ⧇ āĻŽā§‡āĻŽāϰāĻŋ āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻžāĻĒāύāĻžāϝāĻŧ āύāĻŽāύ⧀āϝāĻŧāϤāĻž āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤

āĻāĻŦāĻ‚ āĻāϟāĻŋāχ āĻ›āĻŋāϞ āφāĻŽāĻžāĻĻ⧇āϰ āϞāĻŋāĻ™ā§āϕ⧇āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āĻ…āĻ¨ā§āϤāĻ°ā§āύāĻŋāĻšāĻŋāϤ āĻ—āĻ āύ āύāĻŋāϝāĻŧ⧇ āφāϞ⧋āϚāύāĻžāĨ¤

đŸ”Ĩ04- āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ Constructor
<br>
Enter fullscreen mode Exit fullscreen mode

đŸ”Ĩ04- āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ Constructor

āĻāĻ–āύ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āϝāĻžāĻšā§āĻ›āĻŋāĨ¤ āφāϏ⧁āύ āĻļ⧁āϰ⧁ āĻ•āϰāĻŋāĨ¤

āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟ āĻ•ā§āϞāĻžāϏ āϤ⧈āϰāĻŋ āĻ•āϰāĻž

āĻĒā§āϰāĻĨāĻŽā§‡, āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟ āĻ•ā§āϞāĻžāϏāϟāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻŦāĨ¤ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ⧇āϰ āϕ⧋āĻĄ āϞ⧇āĻ–āĻžāϰ āφāϗ⧇, āφāĻŽāĻŋ āĻ•āĻŋāϛ⧁ āĻŦāĻŋāώāϝāĻŧ āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰāϤ⧇ āϚāĻžāχāĨ¤

āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ⧇āϰ āϏāĻžāϧāĻžāϰāĻŖ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ⧇āϰ āĻ•āĻŋāϛ⧁ āϏāĻžāϧāĻžāϰāĻŖ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āϰāϝāĻŧ⧇āϛ⧇ āϝāĻž āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻĒāĻĻā§āϧāϤāĻŋāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āĻŽāĻŋāϞ āϰāϝāĻŧ⧇āϛ⧇, āϝ⧇āĻŽāύ:

  • Push: āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āϏ⧇āϟāĻŋāϕ⧇ āĻļ⧇āώ⧇āϰ āĻĻāĻŋāϕ⧇ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇āĨ¤
  • Unshift: āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āϏ⧇āϟāĻŋāϕ⧇ āĻļ⧁āϰ⧁āϤ⧇ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇āĨ¤
  • Insert: āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āϏ⧇āϟāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ¸ā§āĻĨāĻžāύ⧇ āϏāĻ¨ā§āύāĻŋāĻŦ⧇āĻļ āĻ•āϰ⧇āĨ¤
class LinkdList {
    constructor(value){
        // create new Node;

    }
    push(value){
        // create new Node
        add Node to end

    }
    unshift(value){
        // create new Node
        add Node to begining
    }
    insert (index, value){
        // create new Node
        add Node to begining
    }
Enter fullscreen mode Exit fullscreen mode

āϏāĻŦāϗ⧁āϞ⧋ āĻĒāĻĻā§āϧāϤāĻŋ āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰ⧇, āϤāĻžāχ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āφāϞāĻžāĻĻāĻž āĻ•ā§āϞāĻžāϏ āϤ⧈āϰāĻŋ āĻ•āϰāĻŦ āϝāĻžāϕ⧇ āφāĻŽāϰāĻž Node āĻŦāϞāĻŦāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒāĻĻā§āϧāϤāĻŋ āϝāĻ–āύ āĻāĻ•āϟāĻŋ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇, āϤāĻ–āύ āĻāϟāĻŋ āĻāχ āĻ•ā§āϞāĻžāϏāϟāĻŋ āĻ•āϞ āĻ•āϰāĻŦ⧇āĨ¤

✅āύ⧋āĻĄ āĻ•ā§āϞāĻžāϏ Constructor

āύ⧋āĻĄ āĻ•ā§āϞāĻžāϏ⧇āϰ āĻ—āĻ āύ āύāĻŋāĻšā§‡āϰ āĻŽāϤ⧋ āĻšāĻŦ⧇:

class Node {
  constructor(value) {
    this.value = value; // āύ⧋āĻĄā§‡āϰ āĻŽāĻžāύ
    this.next = null; // āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ
  }
}
Enter fullscreen mode Exit fullscreen mode
// node class
class MyNode {
  constructor(value) {
    this.value = value;
    this.next = null;
  }
}

const newNode_4 = new MyNode(4); //{value:4, next:null}
Enter fullscreen mode Exit fullscreen mode

✅ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟ Constructor

āĻāĻ–āύ āφāϏ⧁āύ āφāĻŽāĻžāĻĻ⧇āϰ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋ:

class LinkedList {
  constructor(value) {
    const newNode = new Node(value); // āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻž
    this.head = newNode; // āĻšā§‡āĻĄāϕ⧇ āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻž
    this.tail = newNode; // āĻŸā§‡āχāϞāϕ⧇ āĻāĻ•āχ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻž
    this.length = 1; // āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ ā§§ āϏ⧇āϟ āĻ•āϰāĻž
  }
}
Enter fullscreen mode Exit fullscreen mode

āύāϤ⧁āύ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāĻž

āύāϤ⧁āύ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇, āφāĻĒāύāĻŋ āύāĻŋāĻšā§‡āϰ āϕ⧋āĻĄāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āύ:

const myLinkedList = new LinkedList(4); // ā§Ē āĻŽāĻžāύ āϏāĻš āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāĻž
Enter fullscreen mode Exit fullscreen mode

āĻĄā§‡āĻ­āϟ⧁āϞāϏ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž

āĻāĻ–āύ āφāϏ⧁āύ āĻĄā§‡āĻ­āϟ⧁āϞāϏ⧇ āϕ⧋āĻĄāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻŋāĨ¤

  1. āĻĒā§āϰāĻĨāĻŽā§‡, āφāĻŽāϰāĻž new LinkedList(4) āĻ•āϞ āĻ•āϰāĻŋāĨ¤
  2. āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻŦ⧇ āϝāĻžāϰ āĻŽāĻžāύ ā§Ē āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻšā§‡āĻĄ āĻ“ āĻŸā§‡āχāϞ āωāĻ­āϝāĻŧāϕ⧇āχ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŦ⧇āĨ¤
  3. āϝāĻĻāĻŋ āφāĻŽāϰāĻž myLinkedList āϞāĻŋāĻ–āĻŋ āĻāĻŦāĻ‚ āĻāĻ¨ā§āϟāĻžāϰ āϚāĻžāĻĒāĻŋ, āϤāĻžāĻšāϞ⧇ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ āϝ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻāĻ•āϟāĻŋ āĻ•āĻžāϜ āĻ•āϰāϛ⧇ āĻāĻŽāύ āϞāĻŋāĻ™ā§āϕ⧇āĻĄ āϞāĻŋāĻ¸ā§āϟ āφāϛ⧇āĨ¤

āĻĢāϞāĻžāĻĢāϞ

LinkedList {
    head: Node { value: 4, next: null },
    tail: Node { value: 4, next: null },
    length: 1
}
Enter fullscreen mode Exit fullscreen mode

āĻāϟāĻŋ āĻĻ⧇āĻ–āĻžāϝāĻŧ āϝ⧇ āĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ āωāĻ­āϝāĻŧāχ āĻāĻ•āχ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāϛ⧇ āĻāĻŦāĻ‚ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ ā§§āĨ¤

āĻāĻŦāĻ‚ āĻāχāĻ­āĻžāĻŦ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻāĻ•āϟāĻŋ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ⧀ āϞāĻŋāĻ™ā§āϕ⧇āĻĄ āϞāĻŋāĻ¸ā§āϟ āϤ⧈āϰāĻŋ āĻšāϝāĻŧ⧇āϛ⧇!

Full Code 02-LL-Structure.js

class CreateNode {
  constructor(value) {
    this.value = value;
    this.next = null;
  }
}

class LinkdList {
  constructor(value) {
    const newNode = new CreateNode(value);
    this.head = newNode;
    this.tail = this.head;
    this.length = 1;
  }
}

let LL1 = new LinkdList(4);

/*  outPut:
LinkdList {
  head: CreateNode { value: 4, next: null },
  tail: CreateNode { value: 4, next: null },
  length: 1
}

*/
Enter fullscreen mode Exit fullscreen mode
đŸ”Ĩ05- āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āĻĒ⧁āĻļ (Push) āĻŽā§‡āĻĨāĻĄ
<br>
Enter fullscreen mode Exit fullscreen mode

đŸ”Ĩ05- āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āĻĒ⧁āĻļ (Push) āĻŽā§‡āĻĨāĻĄ

āĻāĻ–āύ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻĒ⧁āĻļ (Push) āĻŽā§‡āĻĨāĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻŦāĨ¤ āφāϏ⧁āύ āĻĒā§āϰāĻĨāĻŽā§‡ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒāϗ⧁āϞ⧋ āĻĻ⧇āϖ⧇ āύ⧇āĻ“āϝāĻŧāĻž āϝāĻžāĻ•āĨ¤

āĻĒ⧁āĻļ āĻŽā§‡āĻĨāĻĄā§‡āϰ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ

  1. āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻž: āĻĒā§āϰāĻĨāĻŽā§‡ āφāĻŽāĻžāĻĻ⧇āϰ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤
  2. āϞāĻžāĻ¸ā§āϟ āύ⧋āĻĄā§‡āϰ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϏ⧇āϟ āĻ•āϰāĻž: āϤāĻžāϰāĻĒāϰ, āĻļ⧇āώ āύ⧋āĻĄāϟāĻŋ āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŦ⧇āĨ¤
  3. āĻŸā§‡āχāϞ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž: āĻŸā§‡āχāϞ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϟāĻŋāĻ“ āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŦ⧇āĨ¤

corner case

āφāĻŽāĻžāĻĻ⧇āϰ āĻāĻ•āϟāĻŋ āĻāϜ āϕ⧇āϏāĻ“ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāϤ⧇ āĻšāĻŦ⧇, āϝāĻž āĻšāϞ āϝāĻĻāĻŋ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡ āύ⧋āĻĄ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻŋ āϝāĻž āĻāĻ–āύāĻ“ āĻ–āĻžāϞāĻŋāĨ¤ āĻāχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āφāĻŽāĻžāĻĻ⧇āϰ āĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ āωāĻ­āϝāĻŧāχ āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŦ⧇āĨ¤

āϕ⧋āĻĄ āϞ⧇āĻ–āĻž

āĻāĻ–āύ āφāϏ⧁āύ āϕ⧋āĻĄā§‡ āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻĒ⧁āĻļ āĻŽā§‡āĻĨāĻĄāϟāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋ:

push(value) {
    const newNode = new Node(value); // āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻž

    // āϝāĻĻāĻŋ āĻšā§‡āĻĄ āĻ–āĻžāϞāĻŋ āĻšāϝāĻŧ
    if (!this.head) {
        this.head = newNode; // āĻšā§‡āĻĄāϕ⧇ āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻž
        this.tail = newNode; // āĻŸā§‡āχāϞāϕ⧇āĻ“ āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻž
    } else {
        this.tail.next = newNode; // āĻļ⧇āώ āύ⧋āĻĄā§‡āϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϕ⧇ āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻž
        this.tail = newNode; // āĻŸā§‡āχāϞāϕ⧇ āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻž
    }

    this.length++; // āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ ā§§ āĻŦāĻžāĻĄāĻŧāĻžāύ⧋
    return this; // āĻĒ⧁āϰ⧋ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž
}
Enter fullscreen mode Exit fullscreen mode

āϕ⧋āĻĄ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ

  • āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ: const newNode = new Node(value); āĻāχ āϞāĻžāχāύ⧇ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻ›āĻŋāĨ¤
  • āĻšā§‡āĻĄ āĻšā§‡āĻ•: if (!this.head) āĻāχ āĻļāĻ°ā§āϤāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇ āϝ⧇ āĻšā§‡āĻĄ āĻ–āĻžāϞāĻŋ āĻ•āĻŋ āύāĻžāĨ¤ āϝāĻĻāĻŋ āĻ–āĻžāϞāĻŋ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ āωāĻ­āϝāĻŧāχ āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇āĨ¤
  • āύāϤ⧁āύ āύ⧋āĻĄ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž: āϝāĻĻāĻŋ āĻšā§‡āĻĄ āĻ–āĻžāϞāĻŋ āύāĻž āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āĻļ⧇āώ āύ⧋āĻĄā§‡āϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϕ⧇ āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻŋāĨ¤
  • āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻŦāĻžāĻĄāĻŧāĻžāύ⧋: this.length++ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āφāĻŽāϰāĻž āϞāĻŋāĻ™ā§āϕ⧇āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻŦāĻžāĻĄāĻŧāĻžāĻšā§āĻ›āĻŋāĨ¤
  • āĻĢāĻŋāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻž: return this; āĻĒ⧁āϰ⧋ āϞāĻŋāĻ™ā§āϕ⧇āĻĄ āϞāĻŋāĻ¸ā§āϟ āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤

āĻĄā§‡āĻ­āϟ⧁āϞāϏ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž

āĻāĻ–āύ āφāϏ⧁āύ āĻĄā§‡āĻ­āϟ⧁āϞāϏ⧇ āϕ⧋āĻĄāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻŋ:

let myLinkedList = new LinkedList(7); // ā§­ āĻŽāĻžāύ āϏāĻš āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϞāĻŋāĻ™ā§āϕ⧇āĻĄ āϞāĻŋāĻ¸ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāĻž
myLinkedList.push(4); // ā§Ē āĻŽāĻžāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž
Enter fullscreen mode Exit fullscreen mode
  • āϝāĻ–āύ āφāĻŽāϰāĻž myLinkedList.push(4) āĻ•āϞ āĻ•āϰāĻŋ, āĻāϟāĻŋ āĻĒ⧁āϰ⧋ āϞāĻŋāĻ™ā§āϕ⧇āĻĄ āϞāĻŋāĻ¸ā§āϟ āĻĢ⧇āϰāϤ āĻĻ⧇āĻŦ⧇āĨ¤
  • āφāĻŽāϰāĻž āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ āϝ⧇ āĻšā§‡āĻĄ ā§­ āύ⧋āĻĄāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāϛ⧇ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ ā§Ē āύ⧋āĻĄāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāϛ⧇āĨ¤ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ ⧍āĨ¤

āĻĢāϞāĻžāĻĢāϞ

LinkedList {
    head: Node { value: 7, next: Node { value: 4, next: null } },
    tail: Node { value: 4, next: null },
    length: 2
}
Enter fullscreen mode Exit fullscreen mode

🔲 Full Code

/* 
    🌟 Create a new node 
    🌟if it is first clild or head === null
        assign head pointer to the new Node
        assign tail pointer to the newNode
    🌟 else
        tail.next = newNode e point koray dibo
        tail=newNode kore dibo
    lenght =lenght+1;
    return this --&gt; this represents the global object

*/

class CreateNode {
  constructor(value) {
    this.value = value;
    this.next = null;
  }
}

class LL {
  constructor(value) {
    const newNode = new CreateNode(value);
    this.head = newNode;
    this.tail = newNode;
    this.length = 1;
  }

  // push or add node at the end
  push(value) {
    const newNode = new CreateNode(value);
    if (this.head === null) {
      this.head = newNode;
      this.tail = newNode;
    } else {
      this.tail.next = newNode;
      this.tail = newNode;
    }
    this.length++;
    return this;
  }
}

let myLL = new LL(null);
myLL.push(4);
myLL.push(4);
console.log(myLL);


Enter fullscreen mode Exit fullscreen mode

āĻāĻŦāĻ‚ āĻāχāĻ­āĻžāĻŦ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻĒ⧁āĻļ āĻŽā§‡āĻĨāĻĄ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ⧀ āĻšāϝāĻŧ⧇āϛ⧇!

đŸ”Ĩ06- āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āĻĒāĻĒ (Pop) āĻŽā§‡āĻĨāĻĄ
<br>
Enter fullscreen mode Exit fullscreen mode

đŸ”Ĩ06- āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āĻĒāĻĒ (Pop) āĻŽā§‡āĻĨāĻĄ

āĻāĻ–āύ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻĒāĻĒ (Pop) āĻŽā§‡āĻĨāĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻŦāĨ¤

🌟 āĻĒāĻĒ āĻŽā§‡āĻĨāĻĄā§‡āϰ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ

  1. āĻļ⧇āώ āφāχāĻŸā§‡āĻŽ āĻ…āĻĒāϏāĻžāϰāĻŖ: āĻĒāĻĒ āĻŽā§‡āĻĨāĻĄāϟāĻŋ āĻļ⧇āώ āφāχāĻŸā§‡āĻŽāϟāĻŋ āϏāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻŦ⧇ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞāϕ⧇ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āφāχāĻŸā§‡āĻŽā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŦ⧇āĨ¤
  2. āĻ…āĻĒāϏāĻžāϰāĻŋāϤ āφāχāĻŸā§‡āĻŽ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž: āĻ…āĻĒāϏāĻžāϰāĻŋāϤ āφāχāĻŸā§‡āĻŽāϟāĻŋ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāĻŦ⧇āĨ¤

🌟 āĻāϜ āϕ⧇āϏ

āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻŋāϛ⧁ āĻāϜ āϕ⧇āϏ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāϤ⧇ āĻšāĻŦ⧇:

  1. āĻļā§‚āĻ¨ā§āϝ āφāχāĻŸā§‡āĻŽ: āϝāĻĻāĻŋ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡ āϕ⧋āύāĻ“ āφāχāĻŸā§‡āĻŽ āύāĻž āĻĨāĻžāϕ⧇, āϤāĻžāĻšāϞ⧇ āφāĻŽāϰāĻž āĻ•āĻŋāϛ⧁ āĻ…āĻĒāϏāĻžāϰāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āύāĻžāĨ¤
  2. āĻāĻ•āϟāĻŋ āφāχāĻŸā§‡āĻŽ: āϝāĻĻāĻŋ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡ āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻŋ āφāχāĻŸā§‡āĻŽ āĻĨāĻžāϕ⧇, āϤāĻžāĻšāϞ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻŦāĻŋāĻļ⧇āώāĻ­āĻžāĻŦ⧇ āϕ⧋āĻĄ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤

🌟āĻĒāĻĒ āĻŽā§‡āĻĨāĻĄā§‡āϰ Logic

  • āĻŸā§‡āχāϞāϕ⧇ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āφāχāĻŸā§‡āĻŽā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻž: āĻāϟāĻŋ āĻ•āĻŋāϛ⧁āϟāĻž āϜāϟāĻŋāϞ, āĻ•āĻžāϰāĻŖ āφāĻŽāĻžāĻĻ⧇āϰ āĻŸā§‡āχāϞāϕ⧇ āĻŦāĻžāĻŽ āĻĻāĻŋāϕ⧇ āϏāϰāĻžāϤ⧇ āĻšāĻŦ⧇āĨ¤
  • āύ⧇āĻ¸ā§āĻŸā§‡āĻĄ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĻ⧇āĻ–āϤ⧇ āĻšāĻŦ⧇: āĻŸā§‡āχāϞāϕ⧇ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āφāχāĻŸā§‡āĻŽā§‡ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāĻžāĻĻ⧇āϰ āĻšā§‡āĻĄ āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āĻĒ⧁āϰ⧋ āϤāĻžāϞāĻŋāĻ•āĻžāϟāĻŋ āĻĒāĻžāϰ āĻšāϤ⧇ āĻšāĻŦ⧇āĨ¤

🌟 āϕ⧋āĻĄāĻŋāĻ‚ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž

  1. āύāϤ⧁āύ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻž:
  • temp: āĻāϟāĻŋ āĻļ⧇āώ āύ⧋āĻĄāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŦ⧇āĨ¤
  • pre: āĻāϟāĻŋ āĻļ⧇āώ⧇āϰ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŦ⧇āĨ¤
  1. āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻŽāĻ§ā§āϝ āĻĻāĻŋāϝāĻŧ⧇ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻ•āϰāĻž:
  • temp āĻāϰ next āϝāĻĻāĻŋ āĻ…āĻ¨ā§āϝ āύ⧋āĻĄāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇, āϤāĻžāĻšāϞ⧇ pre āϕ⧇ āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ temp āϕ⧇ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡ āϏāϰāĻžāύāĨ¤
  • āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āϚāϞāϤ⧇ āĻĨāĻžāĻ•āĻŦ⧇ āϝāϤāĻ•ā§āώāĻŖ āύāĻž temp.next null āĻšāϝāĻŧāĨ¤
  1. āĻŸā§‡āχāϞ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž:
  • āĻŸā§‡āχāϞāϕ⧇ pre āĻāϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧁āύāĨ¤
  • tail.next āϕ⧇ null āϏ⧇āϟ āĻ•āϰ⧁āύ, āϝāĻž āĻļ⧇āώ āύ⧋āĻĄāϟāĻŋ āϏāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻŦ⧇āĨ¤
  1. āĻ…āĻĒāϏāĻžāϰāĻŋāϤ āύ⧋āĻĄ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž:
    • āĻ…āĻŦāĻļ⧇āώ⧇, temp āĻĢ⧇āϰāϤ āĻĻāĻŋāύ, āϝāĻž āĻ…āĻĒāϏāĻžāϰāĻŋāϤ āύ⧋āĻĄāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŦ⧇āĨ¤

āϕ⧋āĻĄ āωāĻĻāĻžāĻšāϰāĻŖ

pop() {
    // case 0 items
    if (!this.head) {
        return undefined; // āϝāĻĻāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āĻ–āĻžāϞāĻŋ āĻšāϝāĻŧ
    }
// case two or more items
    let temp = this.head;
    let pre = this.head;

    // āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻŽāĻ§ā§āϝ āĻĻāĻŋāϝāĻŧ⧇ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻ•āϰāĻž means as long as temp !== null
    while (temp.next) {
        pre = temp; // āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž
        temp = temp.next; // āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡ āϝāĻžāĻ“āϝāĻŧāĻž
    }

    this.tail = pre; // āĻŸā§‡āχāϞāϕ⧇ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻž
    this.tail.next = null; // āĻļ⧇āώ āύ⧋āĻĄ āĻ…āĻĒāϏāĻžāϰāĻŖ āĻ•āϰāĻž
    this.length --;

    return temp; // āĻ…āĻĒāϏāĻžāϰāĻŋāϤ āύ⧋āĻĄ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž

//case for one items
   this.tail = pre; // āĻŸā§‡āχāϞāϕ⧇ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻž
    this.tail.next = null; // āĻļ⧇āώ āύ⧋āĻĄ āĻ…āĻĒāϏāĻžāϰāĻŖ āĻ•āϰāĻž
    this.length --;
    if(this.length ===0){
        this.head =null;
        this.tail =null;
    }
    return temp


}
Enter fullscreen mode Exit fullscreen mode

āĻāϟāĻŋ āĻ›āĻŋāϞ āφāĻŽāĻžāĻĻ⧇āϰ āĻĒāĻĒ āĻŽā§‡āĻĨāĻĄā§‡āϰ āĻāĻ•āϟāĻŋ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤ āĻŦāĻŋāĻŦāϰāĻŖāĨ¤

🌟 āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āĻĒāĻĒ (Pop) āĻŽā§‡āĻĨāĻĄ

āĻāĻ–āύ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āĻĒāĻĒ (Pop) āĻŽā§‡āĻĨāĻĄāϟāĻŋ āϕ⧋āĻĄ āĻ•āϰāĻŦāĨ¤ āĻāχ āĻŽā§‡āĻĨāĻĄāϟāĻŋ āĻļ⧇āώ āφāχāĻŸā§‡āĻŽāϟāĻŋ āϏāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻŦ⧇ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞāϕ⧇ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āφāχāĻŸā§‡āĻŽā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŦ⧇āĨ¤

āĻĒāĻĒ āĻŽā§‡āĻĨāĻĄā§‡āϰ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ

  1. āĻļā§‚āĻ¨ā§āϝ āφāχāĻŸā§‡āĻŽ āĻšā§‡āĻ• āĻ•āϰāĻž: āĻĒā§āϰāĻĨāĻŽā§‡ āĻšā§‡āĻ• āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϝ⧇ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡ āϕ⧋āύ⧋ āφāχāĻŸā§‡āĻŽ āφāϛ⧇ āĻ•āĻŋāύāĻžāĨ¤
  2. āĻāĻ•āϟāĻŋ āφāχāĻŸā§‡āĻŽ āĻšā§‡āĻ• āĻ•āϰāĻž: āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āĻŽāĻžāĻ¤ā§āϰ āφāχāĻŸā§‡āĻŽ āĻĨāĻžāϕ⧇, āϤāĻžāĻšāϞ⧇ āĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ āωāĻ­āϝāĻŧāχ āϏ⧇āχ āφāχāĻŸā§‡āĻŽā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŦ⧇āĨ¤
  3. āĻĻ⧁āχ āĻŦāĻž āϤāϤ⧋āϧāĻŋāĻ• āφāχāĻŸā§‡āĻŽ āĻĨāĻžāĻ•āĻž: āϝāĻĻāĻŋ āĻĻ⧁āϟāĻŋ āĻŦāĻž āϤāĻžāϰ āĻŦ⧇āĻļāĻŋ āφāχāĻŸā§‡āĻŽ āĻĨāĻžāϕ⧇, āϤāĻžāĻšāϞ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡ āϝāĻžāĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻŽāĻ§ā§āϝ āĻĻāĻŋāϝāĻŧ⧇ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤

āϕ⧋āĻĄāĻŋāĻ‚ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž

pop() {
    // ā§§. āĻļā§‚āĻ¨ā§āϝ āφāχāĻŸā§‡āĻŽ āĻšā§‡āĻ• āĻ•āϰāĻž
    if (!this.head || this.length === 0) {
        return undefined; // āϤāĻžāϞāĻŋāĻ•āĻž āĻ–āĻžāϞāĻŋ āĻšāϞ⧇ undefined āĻĢ⧇āϰāϤ āĻĻāĻŋāύ
    }

    let temp = this.head; // āĻŸā§‡āĻŽā§āĻĒ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻšā§‡āĻĄāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇
    let pre = null; // āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ

    // ⧍. āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻŽāĻ§ā§āϝ āĻĻāĻŋāϝāĻŧ⧇ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻ•āϰāĻž
    while (temp.next) {
        pre = temp; // āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž
        temp = temp.next; // āĻŸā§‡āĻŽā§āĻĒāϕ⧇ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡ āϏāϰāĻžāύ⧋
    }

    // ā§Š. āĻŸā§‡āχāϞ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž
    this.tail = pre; // āĻŸā§‡āχāϞāϕ⧇ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻž
    this.tail.next = null; // āĻļ⧇āώ āύ⧋āĻĄ āĻ…āĻĒāϏāĻžāϰāĻŖ āĻ•āϰāĻž

    this.length--; // āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻ•āĻŽāĻžāύ⧋

    // ā§Ē. āĻāĻ•āĻŽāĻžāĻ¤ā§āϰ āφāχāĻŸā§‡āĻŽ āĻĨāĻžāĻ•āϞ⧇ āĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž
    if (this.length === 0) {
        this.head = null;
        this.tail = null;
    }

    return temp; // āĻ…āĻĒāϏāĻžāϰāĻŋāϤ āύ⧋āĻĄ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž
}
Enter fullscreen mode Exit fullscreen mode

āϕ⧋āĻĄ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ

  • āĻļā§‚āĻ¨ā§āϝ āφāχāĻŸā§‡āĻŽ āĻšā§‡āĻ•: if (!this.head || this.length === 0) āĻāχ āĻļāĻ°ā§āϤāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇ āϝ⧇ āϤāĻžāϞāĻŋāĻ•āĻž āĻ–āĻžāϞāĻŋ āĻ•āĻŋ āύāĻžāĨ¤ āϝāĻĻāĻŋ āĻ–āĻžāϞāĻŋ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ undefined āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧāĨ¤
  • āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ: while (temp.next) āĻāχ āĻļāĻ°ā§āϤāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āφāĻŽāϰāĻž āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻļ⧇āώ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻĒ⧌āρāĻ›āĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻ•āϰāĻŋāĨ¤
  • āĻŸā§‡āχāϞ āφāĻĒāĻĄā§‡āϟ: this.tail = pre āĻĻā§āĻŦāĻžāϰāĻž āĻŸā§‡āχāϞāϕ⧇ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ this.tail.next = null āĻĻā§āĻŦāĻžāϰāĻž āĻļ⧇āώ āύ⧋āĻĄ āĻ…āĻĒāϏāĻžāϰāĻŖ āĻ•āϰāĻŋāĨ¤
  • āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āφāĻĒāĻĄā§‡āϟ: this.length-- āĻĻā§āĻŦāĻžāϰāĻž āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻ•āĻŽāĻžāύ⧋ āĻšāϝāĻŧāĨ¤ āϝāĻĻāĻŋ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻļā§‚āĻ¨ā§āϝ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ āωāĻ­āϝāĻŧāϕ⧇āχ null āĻ āϏ⧇āϟ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤

āĻĄā§‡āĻ­āϟ⧁āϞāϏ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž

āĻāĻ–āύ āφāϏ⧁āύ āĻĄā§‡āĻ­āϟ⧁āϞāϏ⧇ āϕ⧋āĻĄāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻŋ:

let myLinkedList = new LinkedList(1); // ā§§ āĻŽāĻžāύ āϏāĻš āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϞāĻŋāĻ™ā§āϕ⧇āĻĄ āϞāĻŋāĻ¸ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāĻž
myLinkedList.push(2); // ⧍ āĻŽāĻžāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž

console.log(myLinkedList.pop()); // āĻāϟāĻŋ ⧍ āύ⧋āĻĄ āĻĢ⧇āϰāϤ āĻĻ⧇āĻŦ⧇
console.log(myLinkedList); // āĻāĻ–āύ āĻšā§‡āĻĄ ā§§ āύ⧋āĻĄāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŦ⧇, āĻŸā§‡āχāϞāĻ“ ā§§ āĻšāĻŦ⧇

console.log(myLinkedList.pop()); // āĻāϟāĻŋ ā§§ āύ⧋āĻĄ āĻĢ⧇āϰāϤ āĻĻ⧇āĻŦ⧇
console.log(myLinkedList); // āĻāĻ–āύ āϤāĻžāϞāĻŋāĻ•āĻž āĻ–āĻžāϞāĻŋ āĻšāĻŦ⧇, āĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ āωāĻ­āϝāĻŧāχ null āĻšāĻŦ⧇

console.log(myLinkedList.pop()); // āĻāϟāĻŋ undefined āĻĢ⧇āϰāϤ āĻĻ⧇āĻŦ⧇ āĻ•āĻžāϰāĻŖ āϤāĻžāϞāĻŋāĻ•āĻž āĻ–āĻžāϞāĻŋ
Enter fullscreen mode Exit fullscreen mode

āĻĢāϞāĻžāĻĢāϞ

  • āĻĒā§āϰāĻĨāĻŽ āĻĒāĻĒ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāϟāĻŋ ⧍ āύ⧋āĻĄ āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ āĻāĻŦāĻ‚ āϤāĻžāϞāĻŋāĻ•āĻžāϝāĻŧ ā§§ āύ⧋āĻĄ āĻĨāĻžāϕ⧇āĨ¤
  • āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āĻĒāĻĒ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāϟāĻŋ ā§§ āύ⧋āĻĄ āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ āĻāĻŦāĻ‚ āϤāĻžāϞāĻŋāĻ•āĻž āĻ–āĻžāϞāĻŋ āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤
  • āϤ⧃āϤ⧀āϝāĻŧ āĻĒāĻĒ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāϟāĻŋ undefined āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤

āĻāĻŦāĻ‚ āĻāχāĻ­āĻžāĻŦ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻĒāĻĒ āĻŽā§‡āĻĨāĻĄ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ⧀ āĻšāϝāĻŧ⧇āϛ⧇!

🔲 Full Code

/*  
Pop is O(n) operation.
    case 1: no element
    case 2: two or more elements
    case 3: 1 element


*/



class CreateNode {
  constructor(value) {
    this.value = value;
    this.next = null;
  }
}

class LinkdList {
  constructor(value) {
    const newNode = new CreateNode(value);
    this.head = newNode;
    this.tail = newNode;
    this.length = 1;
  }

  // push or add node at the end
  push(value) {
    const newNode = new CreateNode(value);
    if (this.head === null) {
      this.head = newNode;
      this.tail = newNode;
    } else {
      this.tail.next = newNode;
      this.tail = newNode;
    }
    this.length++;
    return this;
  };


  // pop or remove node at the last O(n)
  pop(){

    // case 1: no element
    if(!this.head || this.length ===0){
        return undefined;
    }
    // case 2: two or more elements
    let temp =this.head;
    let pre =this.head;
    while(temp.next !==null){
        pre =temp;
        temp = temp.next;
    }
    //both case 2 and 3
    this.tail =pre;
    this.tail.next =null;
    this.length --;

    // case 3: 1 element
    if(this.length ===0){
        this.head =null;
        this.tail =null;
    }
    return temp;

  }
};

let myLinkedList =new LinkdList(1);
myLinkedList.push(23);
myLinkedList.push(26);
console.log(myLinkedList)

myLinkedList.pop()
console.log(myLinkedList);

myLinkedList.pop()
console.log(myLinkedList);

myLinkedList.pop()
console.log(myLinkedList)

myLinkedList.pop()
console.log(myLinkedList);

Enter fullscreen mode Exit fullscreen mode
đŸ”Ĩ07- āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āφāύāĻļāĻŋāĻĢāϟ (Unshift) āĻŽā§‡āĻĨāĻĄ
<br>
Enter fullscreen mode Exit fullscreen mode

đŸ”Ĩ07- āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āφāύāĻļāĻŋāĻĢāϟ (Unshift) āĻŽā§‡āĻĨāĻĄ

āĻāĻ–āύ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āφāύāĻļāĻŋāĻĢāϟ (Unshift) āĻŽā§‡āĻĨāĻĄāϟāĻŋ āϞāĻŋāĻ–āĻŦāĨ¤ āφāύāĻļāĻŋāĻĢāϟ āĻŽā§‡āĻĨāĻĄāϟāĻŋ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āύ⧋āĻĄāϕ⧇ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻļ⧁āϰ⧁āϤ⧇ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇āĨ¤

āφāύāĻļāĻŋāĻĢāϟ āĻŽā§‡āĻĨāĻĄā§‡āϰ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ

  1. āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻž: āĻĒā§āϰāĻĨāĻŽā§‡ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤
  2. āĻšā§‡āĻĄ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž: āύāϤ⧁āύ āύ⧋āĻĄāϟāĻŋ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻšā§‡āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŦ⧇āĨ¤
  3. āĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž: āϝāĻĻāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āĻ–āĻžāϞāĻŋ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ āωāĻ­āϝāĻŧāχ āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŦ⧇āĨ¤

āϕ⧋āĻĄāĻŋāĻ‚ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž

unshift(value) {
    const newNode = new Node(value); // āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻž

    // āϝāĻĻāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āĻ–āĻžāϞāĻŋ āĻšāϝāĻŧ
    if (!this.head) {
        this.head = newNode; // āĻšā§‡āĻĄāϕ⧇ āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻž
        this.tail = newNode; // āĻŸā§‡āχāϞāϕ⧇āĻ“ āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻž
    } else {
        newNode.next = this.head; // āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϕ⧇ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻšā§‡āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻž
        this.head = newNode; // āĻšā§‡āĻĄāϕ⧇ āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻž
    }

    this.length++; // āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ ā§§ āĻŦāĻžāĻĄāĻŧāĻžāύ⧋
    return this; // āĻĒ⧁āϰ⧋ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āϟ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž
}
Enter fullscreen mode Exit fullscreen mode

āϕ⧋āĻĄ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ

  • āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ: const newNode = new Node(value); āĻāχ āϞāĻžāχāύ⧇ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻ›āĻŋāĨ¤
  • āĻšā§‡āĻĄ āĻšā§‡āĻ•: if (!this.head) āĻāχ āĻļāĻ°ā§āϤāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇ āϝ⧇ āϤāĻžāϞāĻŋāĻ•āĻž āĻ–āĻžāϞāĻŋ āĻ•āĻŋ āύāĻžāĨ¤ āϝāĻĻāĻŋ āĻ–āĻžāϞāĻŋ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ āωāĻ­āϝāĻŧāχ āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇āĨ¤
  • āύāϤ⧁āύ āύ⧋āĻĄ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž: āϝāĻĻāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āĻ–āĻžāϞāĻŋ āύāĻž āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ newNode.next = this.head; āĻĻā§āĻŦāĻžāϰāĻž āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϕ⧇ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻšā§‡āĻĄā§‡ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻĒāϰ⧇ āĻšā§‡āĻĄ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻŋāĨ¤
  • āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻŦāĻžāĻĄāĻŧāĻžāύ⧋: this.length++ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āφāĻŽāϰāĻž āϞāĻŋāĻ™ā§āϕ⧇āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻŦāĻžāĻĄāĻŧāĻžāĻšā§āĻ›āĻŋāĨ¤
  • āĻĢāĻŋāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻž: return this; āĻĒ⧁āϰ⧋ āϞāĻŋāĻ™ā§āϕ⧇āĻĄ āϞāĻŋāĻ¸ā§āϟ āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤

āĻĄā§‡āĻ­āϟ⧁āϞāϏ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž

āĻāĻ–āύ āφāϏ⧁āύ āĻĄā§‡āĻ­āϟ⧁āϞāϏ⧇ āϕ⧋āĻĄāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻŋ:

let myLinkedList = new LinkedList(11); // ā§§ā§§ āĻŽāĻžāύ āϏāĻš āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϞāĻŋāĻ™ā§āϕ⧇āĻĄ āϞāĻŋāĻ¸ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāĻž
myLinkedList.unshift(4); // ā§Ē āĻŽāĻžāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž
Enter fullscreen mode Exit fullscreen mode
  • āϝāĻ–āύ āφāĻŽāϰāĻž myLinkedList.unshift(4) āĻ•āϞ āĻ•āϰāĻŋ, āĻāϟāĻŋ āĻĒ⧁āϰ⧋ āϞāĻŋāĻ™ā§āϕ⧇āĻĄ āϞāĻŋāĻ¸ā§āϟ āĻĢ⧇āϰāϤ āĻĻ⧇āĻŦ⧇āĨ¤

āĻĢāϞāĻžāĻĢāϞ

LinkedList {
    head: Node { value: 4, next: Node { value: 11, next: null } },
    tail: Node { value: 11, next: null },
    length: 2
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻŦāĻ‚ āĻāχāĻ­āĻžāĻŦ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āφāύāĻļāĻŋāĻĢāϟ (Unshift) āĻŽā§‡āĻĨāĻĄ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ⧀ āĻšāϝāĻŧ⧇āϛ⧇!

🔲 Full Code

class CreateNode {
    constructor(value) {
        this.value = value;
        this.next = null;
    }
}

class LinkdList {
    constructor(value) {
        const newNode = new CreateNode(value);
        this.head = newNode;
        this.tail = newNode;
        this.length = 1;
    }

    // push or add node at the end
    push(value) {
        const newNode = new CreateNode(value);
        if (this.head === null) {
            this.head = newNode;
            this.tail = newNode;
        } else {
            this.tail.next = newNode;
            this.tail = newNode;
        }
        this.length++;
        return this;
    }
    pop() {

        if (!this.head)
            return undefined;
        let temp = this.head;
        let pre = this.head;
        while (temp.next) {
            pre = temp;
            temp = temp.next;
        }
        this.tail = pre;
        this.tail.next = null;
        this.length--;

        if (this.length === 0) {
            this.head = null;
            this.tail = null;
        }
        return temp;
    };


    unshift(value){
        const newNode =new CreateNode(value);

        if(!this.head){
            this.head = newNode;
            this.tail = newNode;
        }else{
            newNode.next =this.head; // pointer update
            this.head =newNode;   // new node k head banalam 
            // newNode =this.head;   // not working anymore
        }
        this.length++;
        return this; //whole linked list

    }
}

let myLinkedList = new LinkdList(1);
myLinkedList.push(20);
myLinkedList.push(70);
myLinkedList.push(40);
// console.log(myLinkedList);

myLinkedList.unshift(33);
console.log(myLinkedList);
Enter fullscreen mode Exit fullscreen mode
đŸ”Ĩ08- āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āĻļāĻŋāĻĢāϟ (Shift) āĻŽā§‡āĻĨāĻĄ
<br>
Enter fullscreen mode Exit fullscreen mode

đŸ”Ĩ08 āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āĻļāĻŋāĻĢāϟ (Shift) āĻŽā§‡āĻĨāĻĄ

āĻāĻ–āύ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻļāĻŋāĻĢāϟ (Shift) āĻŽā§‡āĻĨāĻĄāϟāĻŋ āϞāĻŋāĻ–āĻŦāĨ¤ āĻļāĻŋāĻĢāϟ āĻŽā§‡āĻĨāĻĄāϟāĻŋ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻĒā§āϰāĻĨāĻŽ āφāχāĻŸā§‡āĻŽāϟāĻŋ āϏāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻŦ⧇ āĻāĻŦāĻ‚ āϏ⧇āχ āφāχāĻŸā§‡āĻŽāϟāĻŋ āĻĢ⧇āϰāϤ āĻĻ⧇āĻŦ⧇āĨ¤

āĻļāĻŋāĻĢāϟ āĻŽā§‡āĻĨāĻĄā§‡āϰ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ

  1. āĻļā§‚āĻ¨ā§āϝ āφāχāĻŸā§‡āĻŽ āĻšā§‡āĻ• āĻ•āϰāĻž: āĻĒā§āϰāĻĨāĻŽā§‡ āĻšā§‡āĻ• āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϝ⧇ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡ āϕ⧋āύ⧋ āφāχāĻŸā§‡āĻŽ āφāϛ⧇ āĻ•āĻŋāύāĻžāĨ¤
  2. āĻāĻ•āϟāĻŋ āφāχāĻŸā§‡āĻŽ āĻĨāĻžāĻ•āĻž: āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āĻŽāĻžāĻ¤ā§āϰ āφāχāĻŸā§‡āĻŽ āĻĨāĻžāϕ⧇, āϤāĻžāĻšāϞ⧇ āĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ āωāĻ­āϝāĻŧāχ āϏ⧇āχ āφāχāĻŸā§‡āĻŽā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŦ⧇āĨ¤
  3. āĻĻ⧁āχ āĻŦāĻž āϤāϤ⧋āϧāĻŋāĻ• āφāχāĻŸā§‡āĻŽ āĻĨāĻžāĻ•āĻž: āϝāĻĻāĻŋ āĻĻ⧁āϟāĻŋ āĻŦāĻž āϤāĻžāϰ āĻŦ⧇āĻļāĻŋ āφāχāĻŸā§‡āĻŽ āĻĨāĻžāϕ⧇, āϤāĻžāĻšāϞ⧇ āĻšā§‡āĻĄāϕ⧇ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤

āϕ⧋āĻĄāĻŋāĻ‚ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž

shift() {
    // ā§§. āĻļā§‚āĻ¨ā§āϝ āφāχāĻŸā§‡āĻŽ āĻšā§‡āĻ• āĻ•āϰāĻž
    if (!this.head) {
        return undefined; // āϤāĻžāϞāĻŋāĻ•āĻž āĻ–āĻžāϞāĻŋ āĻšāϞ⧇ undefined āĻĢ⧇āϰāϤ āĻĻāĻŋāύ
    }

    let temp = this.head; // āĻŸā§‡āĻŽā§āĻĒ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻšā§‡āĻĄāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇

    // ⧍. āĻšā§‡āĻĄ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž
    this.head = this.head.next; // āĻšā§‡āĻĄāϕ⧇ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻž

    // ā§Š. āĻ…āĻĒāϏāĻžāϰāĻŋāϤ āύ⧋āĻĄā§‡āϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϕ⧇ null āϏ⧇āϟ āĻ•āϰāĻž
    temp.next = null;

    // ā§Ē. āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻ•āĻŽāĻžāύ⧋
    this.length--;

    // ā§Ģ. āϝāĻĻāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āĻ–āĻžāϞāĻŋ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āĻŸā§‡āχāϞ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž
    if (this.length === 0) {
        this.tail = null;
    }

    return temp; // āĻ…āĻĒāϏāĻžāϰāĻŋāϤ āύ⧋āĻĄ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž
}
Enter fullscreen mode Exit fullscreen mode

āϕ⧋āĻĄ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ

  • āĻļā§‚āĻ¨ā§āϝ āφāχāĻŸā§‡āĻŽ āĻšā§‡āĻ•: if (!this.head) āĻāχ āĻļāĻ°ā§āϤāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇ āϝ⧇ āϤāĻžāϞāĻŋāĻ•āĻž āĻ–āĻžāϞāĻŋ āĻ•āĻŋ āύāĻžāĨ¤ āϝāĻĻāĻŋ āĻ–āĻžāϞāĻŋ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ undefined āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧāĨ¤
  • āĻšā§‡āĻĄ āφāĻĒāĻĄā§‡āϟ: this.head = this.head.next; āĻĻā§āĻŦāĻžāϰāĻž āĻšā§‡āĻĄāϕ⧇ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻŋāĨ¤
  • āĻ…āĻĒāϏāĻžāϰāĻŋāϤ āύ⧋āĻĄā§‡āϰ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āφāĻĒāĻĄā§‡āϟ: temp.next = null; āĻĻā§āĻŦāĻžāϰāĻž āĻ…āĻĒāϏāĻžāϰāĻŋāϤ āύ⧋āĻĄā§‡āϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϕ⧇ null āϏ⧇āϟ āĻ•āϰāĻŋāĨ¤
  • āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āφāĻĒāĻĄā§‡āϟ: this.length-- āĻĻā§āĻŦāĻžāϰāĻž āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻ•āĻŽāĻžāύ⧋ āĻšāϝāĻŧāĨ¤ āϝāĻĻāĻŋ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻļā§‚āĻ¨ā§āϝ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āĻŸā§‡āχāϞāϕ⧇āĻ“ null āĻ āϏ⧇āϟ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤

āĻĄā§‡āĻ­āϟ⧁āϞāϏ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž

āĻāĻ–āύ āφāϏ⧁āύ āĻĄā§‡āĻ­āϟ⧁āϞāϏ⧇ āϕ⧋āĻĄāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻŋ:

let myLinkedList = new LinkedList(2); // ⧍ āĻŽāĻžāύ āϏāĻš āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϞāĻŋāĻ™ā§āϕ⧇āĻĄ āϞāĻŋāĻ¸ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāĻž
myLinkedList.unshift(1); // ā§§ āĻŽāĻžāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž

console.log(myLinkedList.shift()); // āĻāϟāĻŋ ā§§ āύ⧋āĻĄ āĻĢ⧇āϰāϤ āĻĻ⧇āĻŦ⧇
console.log(myLinkedList); // āĻāĻ–āύ āϤāĻžāϞāĻŋāĻ•āĻžāϝāĻŧ ⧍ āύ⧋āĻĄ āĻĨāĻžāĻ•āĻŦ⧇

myLinkedList.shift(); // āĻāϟāĻŋ ⧍ āύ⧋āĻĄ āĻĢ⧇āϰāϤ āĻĻ⧇āĻŦ⧇
console.log(myLinkedList); // āĻāĻ–āύ āϤāĻžāϞāĻŋāĻ•āĻž āĻ–āĻžāϞāĻŋ āĻšāĻŦ⧇, āĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ āωāĻ­āϝāĻŧāχ null āĻšāĻŦ⧇

console.log(myLinkedList.shift()); // āĻāϟāĻŋ undefined āĻĢ⧇āϰāϤ āĻĻ⧇āĻŦ⧇ āĻ•āĻžāϰāĻŖ āϤāĻžāϞāĻŋāĻ•āĻž āĻ–āĻžāϞāĻŋ
Enter fullscreen mode Exit fullscreen mode

āĻĢāϞāĻžāĻĢāϞ

  • āĻĒā§āϰāĻĨāĻŽ āĻļāĻŋāĻĢāϟ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāϟāĻŋ ā§§ āύ⧋āĻĄ āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ āĻāĻŦāĻ‚ āϤāĻžāϞāĻŋāĻ•āĻžāϝāĻŧ ⧍ āύ⧋āĻĄ āĻĨāĻžāϕ⧇āĨ¤
  • āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āĻļāĻŋāĻĢāϟ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāϟāĻŋ ⧍ āύ⧋āĻĄ āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ āĻāĻŦāĻ‚ āϤāĻžāϞāĻŋāĻ•āĻž āĻ–āĻžāϞāĻŋ āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤
  • āϤ⧃āϤ⧀āϝāĻŧ āĻļāĻŋāĻĢāϟ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāϟāĻŋ undefined āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤

āĻāĻŦāĻ‚ āĻāχāĻ­āĻžāĻŦ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻļāĻŋāĻĢāϟ (Shift) āĻŽā§‡āĻĨāĻĄ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ⧀ āĻšāϝāĻŧ⧇āϛ⧇!

Full Code

class CreateNode {
    constructor(value) {
        this.value = value;
        this.next = null;
    }
}

class LinkdList {
    constructor(value) {
        const newNode = new CreateNode(value);
        this.head = newNode;
        this.tail = newNode;
        this.length = 1;
    }


    //todo: Add Node
    // push or add node at the end
    push(value) {
        const newNode = new CreateNode(value);
        if (this.head === null) {
            this.head = newNode;
            this.tail = newNode;
        } else {
            this.tail.next = newNode;
            this.tail = newNode;
        }
        this.length++;
        return this;
    }

    // add node at the start
    unshift(value){
        const newNode =new CreateNode(value);

        if(!this.head){
            this.head = newNode;
            this.tail = newNode;
        }else{
            newNode.next =this.head; // pointer update
            this.head =newNode;   // new node k head banalam 
        }
        this.length++;
        return this; //whole linked list
    }

    //todo: Delete Node 

    // remove from end
    pop() {

        if (!this.head)
            return undefined;
        let temp = this.head;
        let pre = this.head;
        while (temp.next) {
            pre = temp;
            temp = temp.next;
        }
        this.tail = pre;
        this.tail.next = null;
        this.length--;

        if (this.length === 0) {
            this.head = null;
            this.tail = null;
        }
        return temp;
    };

    //remove from first
    shift(){
        if(!this.head) 
            return this.undefined;
        let tempNode =this.head;   // tempNode pointing to the head
        this.head =this.head.next;  // move head pointer
        tempNode.next= null;   // finally ser tempNode to null for detaching from head
        this.length--;

        if(this.length ===0){
            this.tail =null;
        }
        return this;
    }
}

let myLinkedList = new LinkdList(1);
myLinkedList.push(20);

myLinkedList.unshift(33);
console.log(myLinkedList);

myLinkedList.shift();
console.log(myLinkedList);


Enter fullscreen mode Exit fullscreen mode
đŸ”Ĩ09 -āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āϗ⧇āϟ (Get) āĻŽā§‡āĻĨāĻĄ
<br>
Enter fullscreen mode Exit fullscreen mode

đŸ”Ĩ09 -āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āϗ⧇āϟ (Get) āĻŽā§‡āĻĨāĻĄ

āĻāĻ–āύ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āϗ⧇āϟ (Get) āĻŽā§‡āĻĨāĻĄāϟāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻŦāĨ¤ āϗ⧇āϟ āĻŽā§‡āĻĨāĻĄāϟāĻŋ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āχāύāĻĄā§‡āĻ•ā§āϏ⧇ āĻĨāĻžāĻ•āĻž āύ⧋āĻĄāϟāĻŋ āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤

āϗ⧇āϟ āĻŽā§‡āĻĨāĻĄā§‡āϰ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ

  1. āχāύāĻĄā§‡āĻ•ā§āϏ āĻšā§‡āĻ• āĻ•āϰāĻž: āĻĒā§āϰāĻĨāĻŽā§‡ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϝ⧇ āχāύāĻĄā§‡āĻ•ā§āϏāϟāĻŋ āĻŦ⧈āϧ āĻ•āĻŋāύāĻžāĨ¤
  2. āύ⧋āĻĄ āĻ–ā§‹āρāϜāĻž: āϝāĻĻāĻŋ āχāύāĻĄā§‡āĻ•ā§āϏ āĻŦ⧈āϧ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻļ⧁āϰ⧁ āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āχāύāĻĄā§‡āĻ•ā§āϏ⧇ āĻĒ⧌āρāĻ›āĻžāϤ⧇ āĻšāĻŦ⧇āĨ¤
  3. āύ⧋āĻĄ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž: āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āχāύāĻĄā§‡āĻ•ā§āϏ⧇āϰ āύ⧋āĻĄāϟāĻŋ āĻĢ⧇āϰāϤ āĻĻāĻŋāϤ⧇ āĻšāĻŦ⧇āĨ¤

āϕ⧋āĻĄāĻŋāĻ‚ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž

get(index) {
    // ā§§. āχāύāĻĄā§‡āĻ•ā§āϏ āĻšā§‡āĻ• āĻ•āϰāĻž
    if (index &lt; 0 || index &gt;= this.length) {
        return undefined; // āĻ…āĻŦ⧈āϧ āχāύāĻĄā§‡āĻ•ā§āϏ āĻšāϞ⧇ undefined āĻĢ⧇āϰāϤ āĻĻāĻŋāύ
    }

    let temp = this.head; // āĻŸā§‡āĻŽā§āĻĒ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻšā§‡āĻĄāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇

    // ⧍. āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻŽāĻ§ā§āϝ āĻĻāĻŋāϝāĻŧ⧇ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻ•āϰāĻž
    for (let i = 0; i &lt; index; i++) {
        temp = temp.next; // āĻŸā§‡āĻŽā§āĻĒāϕ⧇ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡ āϏāϰāĻžāύ⧋
    }

    return temp; // āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āχāύāĻĄā§‡āĻ•ā§āϏ⧇āϰ āύ⧋āĻĄ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž
}
Enter fullscreen mode Exit fullscreen mode

āϕ⧋āĻĄ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ

  • āχāύāĻĄā§‡āĻ•ā§āϏ āĻšā§‡āĻ•: if (index &lt; 0 || index &gt;= this.length) āĻāχ āĻļāĻ°ā§āϤāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇ āϝ⧇ āχāύāĻĄā§‡āĻ•ā§āϏ āĻŦ⧈āϧ āĻ•āĻŋāύāĻžāĨ¤ āϝāĻĻāĻŋ āĻ…āĻŦ⧈āϧ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ undefined āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧāĨ¤
  • āύ⧋āĻĄ āĻ–ā§‹āρāϜāĻž: for (let i = 0; i &lt; index; i++) āĻĻā§āĻŦāĻžāϰāĻž āφāĻŽāϰāĻž āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻŽāĻ§ā§āϝ āĻĻāĻŋāϝāĻŧ⧇ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ temp āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϕ⧇ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡ āϏāϰāĻžāχāĨ¤
  • āύ⧋āĻĄ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž: āĻļ⧇āώ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ, return temp; āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āχāύāĻĄā§‡āĻ•ā§āϏ⧇āϰ āύ⧋āĻĄāϟāĻŋ āĻĢ⧇āϰāϤ āĻĻāĻŋāχāĨ¤
let myLinkedList = new LinkedList(0); // ā§Ļ āĻŽāĻžāύ āϏāĻš āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϞāĻŋāĻ™ā§āϕ⧇āĻĄ āϞāĻŋāĻ¸ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāĻž
myLinkedList.unshift(1); // ā§§ āĻŽāĻžāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž
myLinkedList.unshift(2); // ⧍ āĻŽāĻžāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž
myLinkedList.unshift(3); // ā§Š āĻŽāĻžāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž

console.log(myLinkedList.get(-1)); // āĻāϟāĻŋ undefined āĻĢ⧇āϰāϤ āĻĻ⧇āĻŦ⧇ (āĻ…āĻŦ⧈āϧ āχāύāĻĄā§‡āĻ•ā§āϏ)
console.log(myLinkedList.get(10)); // āĻāϟāĻŋ undefined āĻĢ⧇āϰāϤ āĻĻ⧇āĻŦ⧇ (āĻ…āĻŦ⧈āϧ āχāύāĻĄā§‡āĻ•ā§āϏ)
console.log(myLinkedList.get(2)); // āĻāϟāĻŋ ⧍ āύ⧋āĻĄ āĻĢ⧇āϰāϤ āĻĻ⧇āĻŦ⧇ (āĻŦ⧈āϧ āχāύāĻĄā§‡āĻ•ā§āϏ)
Enter fullscreen mode Exit fullscreen mode

āĻĢāϞāĻžāĻĢāϞ

  • āĻĒā§āϰāĻĨāĻŽ āϗ⧇āϟ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāϟāĻŋ āĻ…āĻŦ⧈āϧ āχāύāĻĄā§‡āĻ•ā§āϏ (-1) āĻāϰ āϜāĻ¨ā§āϝ undefined āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤
  • āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āϗ⧇āϟ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāϟāĻŋ āĻ…āĻŦ⧈āϧ āχāύāĻĄā§‡āĻ•ā§āϏ (10) āĻāϰ āϜāĻ¨ā§āϝāĻ“ undefined āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤
  • āϤ⧃āϤ⧀āϝāĻŧ āϗ⧇āϟ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāϟāĻŋ āĻŦ⧈āϧ āχāύāĻĄā§‡āĻ•ā§āϏ (2) āĻāϰ āϜāĻ¨ā§āϝ ⧍ āύ⧋āĻĄā§‡āϰ āĻŽāĻžāύ āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤

āĻāĻŦāĻ‚ āĻāχāĻ­āĻžāĻŦ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āϗ⧇āϟ (Get) āĻŽā§‡āĻĨāĻĄ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ⧀ āĻšāϝāĻŧ⧇āϛ⧇!

đŸ”Ĩ10- āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āϏ⧇āϟ (Set) āĻŽā§‡āĻĨāĻĄ
<br>
Enter fullscreen mode Exit fullscreen mode

đŸ”Ĩ10- āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āϏ⧇āϟ (Set) āĻŽā§‡āĻĨāĻĄ

āĻāĻ–āύ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āϏ⧇āϟ (Set) āĻŽā§‡āĻĨāĻĄāϟāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻŦāĨ¤ āϏ⧇āϟ āĻŽā§‡āĻĨāĻĄāϟāĻŋ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āχāύāĻĄā§‡āĻ•ā§āϏ⧇ āĻĨāĻžāĻ•āĻž āύ⧋āĻĄā§‡āϰ āĻŽāĻžāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇āĨ¤

āϏ⧇āϟ āĻŽā§‡āĻĨāĻĄā§‡āϰ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ

  1. āχāύāĻĄā§‡āĻ•ā§āϏ āĻšā§‡āĻ• āĻ•āϰāĻž: āĻĒā§āϰāĻĨāĻŽā§‡ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϝ⧇ āχāύāĻĄā§‡āĻ•ā§āϏāϟāĻŋ āĻŦ⧈āϧ āĻ•āĻŋāύāĻžāĨ¤
  2. āύ⧋āĻĄ āĻ–ā§‹āρāϜāĻž: āϝāĻĻāĻŋ āχāύāĻĄā§‡āĻ•ā§āϏ āĻŦ⧈āϧ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻļ⧁āϰ⧁ āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āχāύāĻĄā§‡āĻ•ā§āϏ⧇ āĻĒ⧌āρāĻ›āĻžāϤ⧇ āĻšāĻŦ⧇āĨ¤
  3. āĻŽāĻžāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž: āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āχāύāĻĄā§‡āĻ•ā§āϏ⧇āϰ āύ⧋āĻĄāϟāĻŋāϰ āĻŽāĻžāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤
  4. āĻĢāϞāĻžāĻĢāϞ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž: āϏāĻĢāϞāĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻšāϞ⧇ true āĻĢ⧇āϰāϤ āĻĻāĻŋāϤ⧇ āĻšāĻŦ⧇, āĻ…āĻ¨ā§āϝāĻĨāĻžāϝāĻŧ falseāĨ¤

āϕ⧋āĻĄāĻŋāĻ‚ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž

set(index, value) {
    // ā§§. āχāύāĻĄā§‡āĻ•ā§āϏ āĻšā§‡āĻ• āĻ•āϰāĻž
    if (index &lt; 0 || index &gt;= this.length) {
        return false; // āĻ…āĻŦ⧈āϧ āχāύāĻĄā§‡āĻ•ā§āϏ āĻšāϞ⧇ false āĻĢ⧇āϰāϤ āĻĻāĻŋāύ
    }

    let temp = this.get(index); // āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āχāύāĻĄā§‡āĻ•ā§āϏ⧇āϰ āύ⧋āĻĄ āĻ–ā§‹āρāϜāĻž

    // ⧍. āύ⧋āĻĄ āĻĒāĻžāĻ“āϝāĻŧāĻž āϗ⧇āϞ⧇ āĻŽāĻžāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž
    if (temp) {
        temp.value = value; // āύ⧋āĻĄā§‡āϰ āĻŽāĻžāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž
        return true; // āϏāĻĢāϞāĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻšāϞ⧇ true āĻĢ⧇āϰāϤ āĻĻāĻŋāύ
    }

    return false; // āύ⧋āĻĄ āύāĻž āĻĒāĻžāĻ“āϝāĻŧāĻž āϗ⧇āϞ⧇ false āĻĢ⧇āϰāϤ āĻĻāĻŋāύ
}
Enter fullscreen mode Exit fullscreen mode

āϕ⧋āĻĄ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ

  • āχāύāĻĄā§‡āĻ•ā§āϏ āĻšā§‡āĻ•: if (index &lt; 0 || index &gt;= this.length) āĻāχ āĻļāĻ°ā§āϤāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇ āϝ⧇ āχāύāĻĄā§‡āĻ•ā§āϏ āĻŦ⧈āϧ āĻ•āĻŋāύāĻžāĨ¤ āϝāĻĻāĻŋ āĻ…āĻŦ⧈āϧ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ false āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧāĨ¤
  • āύ⧋āĻĄ āĻ–ā§‹āρāϜāĻž: let temp = this.get(index); āĻĻā§āĻŦāĻžāϰāĻž āφāĻŽāϰāĻž āϗ⧇āϟ āĻŽā§‡āĻĨāĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āχāύāĻĄā§‡āĻ•ā§āϏ⧇āϰ āύ⧋āĻĄāϟāĻŋ āϖ⧁āρāĻœā§‡ āĻŦ⧇āϰ āĻ•āϰāĻŋāĨ¤
  • āĻŽāĻžāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ: if (temp) āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻšāχ āϝ⧇ āύ⧋āĻĄāϟāĻŋ āĻĒāĻžāĻ“āϝāĻŧāĻž āϗ⧇āϛ⧇ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ temp.value = value; āĻĻā§āĻŦāĻžāϰāĻž āĻŽāĻžāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻŋāĨ¤
  • āĻĢāϞāĻžāĻĢāϞ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž: āϏāĻĢāϞāĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻšāϞ⧇ true āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻĨāĻžāϝāĻŧ false āĻĢ⧇āϰāϤ āĻĻāĻŋāχāĨ¤

āĻĄā§‡āĻ­āϟ⧁āϞāϏ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž

āĻāĻ–āύ āφāϏ⧁āύ āĻĄā§‡āĻ­āϟ⧁āϞāϏ⧇ āϕ⧋āĻĄāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻŋ:

let myLinkedList = new LinkedList(3); // ā§Š āĻŽāĻžāύ āϏāĻš āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϞāĻŋāĻ™ā§āϕ⧇āĻĄ āϞāĻŋāĻ¸ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāĻž
myLinkedList.unshift(2); // ⧍ āĻŽāĻžāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž
myLinkedList.unshift(1); // ā§§ āĻŽāĻžāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž

console.log(myLinkedList.set(1, 4)); // āĻāϟāĻŋ true āĻĢ⧇āϰāϤ āĻĻ⧇āĻŦ⧇ āĻāĻŦāĻ‚ ⧍ āύ⧋āĻĄā§‡āϰ āĻŽāĻžāύāϕ⧇ ā§Ē āĻ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻŦ⧇
console.log(myLinkedList.get(1)); // āĻāϟāĻŋ āĻāĻ–āύ ā§Ē āĻĢ⧇āϰāϤ āĻĻ⧇āĻŦ⧇
Enter fullscreen mode Exit fullscreen mode

āĻĢāϞāĻžāĻĢāϞ

  • āĻĒā§āϰāĻĨāĻŽ āϏ⧇āϟ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāϟāĻŋ āϏāĻĢāϞāĻ­āĻžāĻŦ⧇ ⧍ āύ⧋āĻĄā§‡āϰ āĻŽāĻžāύāϕ⧇ ā§Ē āĻ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ āĻāĻŦāĻ‚ true āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤
  • āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āϗ⧇āϟ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāϟāĻŋ āύāϤ⧁āύ āĻŽāĻžāύ (ā§Ē) āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤

āĻāĻŦāĻ‚ āĻāχāĻ­āĻžāĻŦ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āϏ⧇āϟ (Set) āĻŽā§‡āĻĨāĻĄ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ⧀ āĻšāϝāĻŧ⧇āϛ⧇!

đŸ”Ĩ11 -āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āχāύāϏāĻžāĻ°ā§āϟ (Insert) āĻŽā§‡āĻĨāĻĄ
<br>
Enter fullscreen mode Exit fullscreen mode

đŸ”Ĩ11 āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āχāύāϏāĻžāĻ°ā§āϟ (Insert) āĻŽā§‡āĻĨāĻĄ

Insert Node at any position

āĻāĻ–āύ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āχāύāϏāĻžāĻ°ā§āϟ (Insert) āĻŽā§‡āĻĨāĻĄāϟāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻŦāĨ¤ āχāύāϏāĻžāĻ°ā§āϟ āĻŽā§‡āĻĨāĻĄāϟāĻŋ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āύ⧋āĻĄāϕ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āχāύāĻĄā§‡āĻ•ā§āϏ⧇ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇āĨ¤

āχāύāϏāĻžāĻ°ā§āϟ āĻŽā§‡āĻĨāĻĄā§‡āϰ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ

  1. āχāύāĻĄā§‡āĻ•ā§āϏ āĻšā§‡āĻ• āĻ•āϰāĻž: āĻĒā§āϰāĻĨāĻŽā§‡ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϝ⧇ āχāύāĻĄā§‡āĻ•ā§āϏāϟāĻŋ āĻŦ⧈āϧ āĻ•āĻŋāύāĻžāĨ¤
  2. āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻž: āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤
  3. āύ⧋āĻĄ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž:
    • āϝāĻĻāĻŋ āχāύāĻĄā§‡āĻ•ā§āϏ ā§Ļ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ unshift āĻŽā§‡āĻĨāĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āύāϤ⧁āύ āύ⧋āĻĄ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύāĨ¤
    • āϝāĻĻāĻŋ āχāύāĻĄā§‡āĻ•ā§āϏ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ⧇āϰ āϏāĻŽāĻžāύ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ push āĻŽā§‡āĻĨāĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āύāϤ⧁āύ āύ⧋āĻĄ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύāĨ¤
    • āϝāĻĻāĻŋ āχāύāĻĄā§‡āĻ•ā§āϏ āĻŦ⧈āϧ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻŽāĻžāĻāĻ–āĻžāύ⧇ āϝ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡āϰ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧁āύāĨ¤

āϕ⧋āĻĄāĻŋāĻ‚ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž

insert(index, value) {
    // ā§§. āχāύāĻĄā§‡āĻ•ā§āϏ āĻšā§‡āĻ• āĻ•āϰāĻž
    if (index &lt; 0 || index &gt; this.length) {
        return false; // āĻ…āĻŦ⧈āϧ āχāύāĻĄā§‡āĻ•ā§āϏ āĻšāϞ⧇ false āĻĢ⧇āϰāϤ āĻĻāĻŋāύ
    }

    const newNode = new Node(value); // āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻž

    // ⧍. āϝāĻĻāĻŋ āχāύāĻĄā§‡āĻ•ā§āϏ ā§Ļ āĻšāϝāĻŧ
    if (index === 0) {
        return this.unshift(value); // unshift āĻŽā§‡āĻĨāĻĄ āĻ•āϞ āĻ•āϰāĻž
    }

    // ā§Š. āϝāĻĻāĻŋ āχāύāĻĄā§‡āĻ•ā§āϏ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ⧇āϰ āϏāĻŽāĻžāύ āĻšāϝāĻŧ
    if (index === this.length) {
        return this.push(value); // push āĻŽā§‡āĻĨāĻĄ āĻ•āϞ āĻ•āϰāĻž
    }

    // ā§Ē. āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻŽāĻžāĻāĻ–āĻžāύ⧇ āχāύāϏāĻžāĻ°ā§āϟ āĻ•āϰāĻž
    let temp = this.get(index - 1); // āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄ āĻ–ā§‹āρāϜāĻž
    newNode.next = temp.next; // āύāϤ⧁āύ āύ⧋āĻĄā§‡āϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž
    temp.next = newNode; // āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡āϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϕ⧇ āύāϤ⧁āύ āύ⧋āĻĄā§‡ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻž

    this.length++; // āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻŦāĻžāĻĄāĻŧāĻžāύ⧋
    return true; // āϏāĻĢāϞāĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻšāϞ⧇ true āĻĢ⧇āϰāϤ āĻĻāĻŋāύ
}
Enter fullscreen mode Exit fullscreen mode

āϕ⧋āĻĄ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ

  • āχāύāĻĄā§‡āĻ•ā§āϏ āĻšā§‡āĻ•: if (index &lt; 0 || index &gt; this.length) āĻāχ āĻļāĻ°ā§āϤāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇ āϝ⧇ āχāĻ¨Úˆā§‡āĻ•ā§āϏ āĻŦ⧈āϧ āĻ•āĻŋāύāĻžāĨ¤ āϝāĻĻāĻŋ āĻ…āĻŦ⧈āϧ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ false āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧāĨ¤
  • āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ: const newNode = new Node(value); āĻĻā§āĻŦāĻžāϰāĻž āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋāĨ¤
  • āχāύāϏāĻžāĻ°ā§āϟ āĻ…āĻĒāĻžāϰ⧇āĻļāύ:
    • āϝāĻĻāĻŋ āχāύāĻĄā§‡āĻ•ā§āϏ ā§Ļ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ unshift āĻŽā§‡āĻĨāĻĄ āĻ•āϞ āĻ•āϰāĻŋāĨ¤
    • āϝāĻĻāĻŋ āχāĻ¨Úˆā§‡āĻ•ā§āϏ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ⧇āϰ āϏāĻŽāĻžāύ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ push āĻŽā§‡āĻĨāĻĄ āĻ•āϞ āĻ•āϰāĻŋāĨ¤
    • āĻ…āĻ¨ā§āϝāĻĨāĻžāϝāĻŧ, āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄ āϖ⧁āρāĻœā§‡ āĻŦ⧇āϰ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āύāϤ⧁āύ āύ⧋āĻĄ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻŋāĨ¤
  • āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻŦāĻžāĻĄāĻŧāĻžāύ⧋: this.length++ āĻĻā§āĻŦāĻžāϰāĻž āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻŦāĻžāĻĄāĻŧāĻžāχāĨ¤
let myLinkedList = new LinkedList(0); // ā§Ļ āĻŽāĻžāύ āϏāĻš āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϞāĻŋāĻ™ā§āϕ⧇āĻĄ āϞāĻŋāĻ¸ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāĻž
myLinkedList.push(2); // ⧍ āĻŽāĻžāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž

console.log(myLinkedList.insert(1, 1)); // āĻāϟāĻŋ true āĻĢ⧇āϰāϤ āĻĻ⧇āĻŦ⧇ āĻāĻŦāĻ‚ ā§§ āύ⧋āĻĄāϕ⧇ āχāύāϏāĻžāĻ°ā§āϟ āĻ•āϰāĻŦ⧇
console.log(myLinkedList); // āĻāĻ–āύ āϤāĻžāϞāĻŋāĻ•āĻžāϝāĻŧ ā§Ļ -&gt; ā§§ -&gt; ⧍ āĻĨāĻžāĻ•āĻŦ⧇
Enter fullscreen mode Exit fullscreen mode

āĻĢāϞāĻžāĻĢāϞ

  • āĻĒā§āϰāĻĨāĻŽ āχāύāϏāĻžāĻ°ā§āϟ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāϟāĻŋ āϏāĻĢāϞāĻ­āĻžāĻŦ⧇ ā§§ āύ⧋āĻĄāϕ⧇ āχāύāϏāĻžāĻ°ā§āϟ āĻ•āϰ⧇ āĻāĻŦāĻ‚ true āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤
  • āϤāĻžāϞāĻŋāĻ•āĻž āĻāĻ–āύ ā§Ļ -> ā§§ -> ⧍ āϰ⧂āĻĒ⧇ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤

āĻāĻŦāĻ‚ āĻāχāĻ­āĻžāĻŦ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āχāύāϏāĻžāĻ°ā§āϟ (Insert) āĻŽā§‡āĻĨāĻĄ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ⧀ āĻšāϝāĻŧ⧇āϛ⧇!

đŸ”Ĩ12-āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āϰāĻŋāĻŽā§āĻ­ (Remove) āĻŽā§‡āĻĨāĻĄ 
<br>
Enter fullscreen mode Exit fullscreen mode

đŸ”Ĩ12-āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āϰāĻŋāĻŽā§āĻ­ (Remove) āĻŽā§‡āĻĨāĻĄ

āĻāĻ–āύ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āϰāĻŋāĻŽā§āĻ­ (Remove) āĻŽā§‡āĻĨāĻĄāϟāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻŦāĨ¤ āϰāĻŋāĻŽā§āĻ­ āĻŽā§‡āĻĨāĻĄāϟāĻŋ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āχāύāĻĄā§‡āĻ•ā§āϏ āĻĨ⧇āϕ⧇ āĻāĻ•āϟāĻŋ āφāχāĻŸā§‡āĻŽ āϏāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧāĨ¤

āϰāĻŋāĻŽā§āĻ­ āĻŽā§‡āĻĨāĻĄā§‡āϰ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ

  1. āχāύāĻĄā§‡āĻ•ā§āϏ āĻšā§‡āĻ• āĻ•āϰāĻž: āĻĒā§āϰāĻĨāĻŽā§‡ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϝ⧇ āχāύāĻĄā§‡āĻ•ā§āϏāϟāĻŋ āĻŦ⧈āϧ āĻ•āĻŋāύāĻžāĨ¤
  2. āĻĒā§āϰāĻĨāĻŽ āφāχāĻŸā§‡āĻŽ āϏāϰāĻžāύ⧋: āϝāĻĻāĻŋ āχāύāĻĄā§‡āĻ•ā§āϏ ā§Ļ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ shift āĻŽā§‡āĻĨāĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āφāχāĻŸā§‡āĻŽ āϏāϰāĻžāύāĨ¤
  3. āĻļ⧇āώ āφāχāĻŸā§‡āĻŽ āϏāϰāĻžāύ⧋: āϝāĻĻāĻŋ āχāύāĻĄā§‡āĻ•ā§āϏ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ⧇āϰ āϏāĻŽāĻžāύ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ pop āĻŽā§‡āĻĨāĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āφāχāĻŸā§‡āĻŽ āϏāϰāĻžāύāĨ¤
  4. āĻŽāĻžāĻā§‡ āφāχāĻŸā§‡āĻŽ āϏāϰāĻžāύ⧋: āϝāĻĻāĻŋ āχāύāĻĄā§‡āĻ•ā§āϏ āĻŦ⧈āϧ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻŽāĻžāĻāĻ–āĻžāύ⧇ āφāχāĻŸā§‡āĻŽ āϏāϰāĻžāϤ⧇ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡āϰ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧁āύāĨ¤

āϕ⧋āĻĄāĻŋāĻ‚ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž

remove(index) {
    // ā§§. āχāύāĻĄā§‡āĻ•ā§āϏ āĻšā§‡āĻ• āĻ•āϰāĻž
    if (index &lt; 0 || index &gt;= this.length) {
        return undefined; // āĻ…āĻŦ⧈āϧ āχāύāĻĄā§‡āĻ•ā§āϏ āĻšāϞ⧇ undefined āĻĢ⧇āϰāϤ āĻĻāĻŋāύ
    }

    // ⧍. āĻĒā§āϰāĻĨāĻŽ āφāχāĻŸā§‡āĻŽ āϏāϰāĻžāύ⧋
    if (index === 0) {
        return this.shift(); // shift āĻŽā§‡āĻĨāĻĄ āĻ•āϞ āĻ•āϰāĻž
    }

    // ā§Š. āĻļ⧇āώ āφāχāĻŸā§‡āĻŽ āϏāϰāĻžāύ⧋
    if (index === this.length - 1) {
        return this.pop(); // pop āĻŽā§‡āĻĨāĻĄ āĻ•āϞ āĻ•āϰāĻž
    }

    // ā§Ē. āĻŽāĻžāĻāĻ–āĻžāύ⧇ āφāχāĻŸā§‡āĻŽ āϏāϰāĻžāύ⧋
    let before = this.get(index - 1); // āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄ āĻ–ā§‹āρāϜāĻž
    let temp = before.next; // āĻ…āĻĒāϏāĻžāϰāĻŋāϤ āύ⧋āĻĄāϟāĻŋ āĻ–ā§‹āρāϜāĻž

    before.next = temp.next; // āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡āϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž
    temp.next = null; // āĻ…āĻĒāϏāĻžāϰāĻŋāϤ āύ⧋āĻĄā§‡āϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϕ⧇ null āϏ⧇āϟ āĻ•āϰāĻž

    this.length--; // āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻ•āĻŽāĻžāύ⧋

    return temp; // āĻ…āĻĒāϏāĻžāϰāĻŋāϤ āύ⧋āĻĄ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž
}
Enter fullscreen mode Exit fullscreen mode

āϕ⧋āĻĄ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ

  • āχāύāĻĄā§‡āĻ•ā§āϏ āĻšā§‡āĻ•: if (index &lt; 0 || index &gt;= this.length) āĻāχ āĻļāĻ°ā§āϤāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇ āϝ⧇ āχāύāĻĄā§‡āĻ•ā§āϏ āĻŦ⧈āϧ āĻ•āĻŋāύāĻžāĨ¤ āϝāĻĻāĻŋ āĻ…āĻŦ⧈āϧ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ undefined āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧāĨ¤
  • āĻĒā§āϰāĻĨāĻŽ āφāχāĻŸā§‡āĻŽ āϏāϰāĻžāύ⧋: if (index === 0) āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻšāχ āϝ⧇ āĻāϟāĻŋ āĻĒā§āϰāĻĨāĻŽ āφāχāĻŸā§‡āĻŽ āĻāĻŦāĻ‚ shift āĻŽā§‡āĻĨāĻĄ āĻ•āϞ āĻ•āϰāĻŋāĨ¤
  • āĻļ⧇āώ āφāχāĻŸā§‡āĻŽ āϏāϰāĻžāύ⧋: if (index === this.length - 1) āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻšāχ āϝ⧇ āĻāϟāĻŋ āĻļ⧇āώ āφāχāĻŸā§‡āĻŽ āĻāĻŦāĻ‚ pop āĻŽā§‡āĻĨāĻĄ āĻ•āϞ āĻ•āϰāĻŋāĨ¤
  • āĻŽāĻžāĻāĻ–āĻžāύ⧇ āφāχāĻŸā§‡āĻŽ āϏāϰāĻžāύ⧋: āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄ āϖ⧁āρāĻœā§‡ āĻŦ⧇āϰ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āύāϤ⧁āύ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āϏ⧇āϟ āĻ•āϰāĻŋāĨ¤
  • āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻ•āĻŽāĻžāύ⧋: this.length-- āĻĻā§āĻŦāĻžāϰāĻž āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻ•āĻŽāĻžāχāĨ¤

āĻāĻ–āύ āφāϏ⧁āύ āĻĄā§‡āĻ­āϟ⧁āϞāϏ⧇ āϕ⧋āĻĄāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻŋ:

let myLinkedList = new LinkedList(11); // ā§§ā§§ āĻŽāĻžāύ āϏāĻš āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϞāĻŋāĻ™ā§āϕ⧇āĻĄ āϞāĻŋāĻ¸ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāĻž
myLinkedList.push(23); // ā§¨ā§Š āĻŽāĻžāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž
myLinkedList.push(7); // ā§­ āĻŽāĻžāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž

console.log(myLinkedList.remove(1)); // āĻāϟāĻŋ ā§¨ā§Š āύ⧋āĻĄ āĻĢ⧇āϰāϤ āĻĻ⧇āĻŦ⧇ āĻāĻŦāĻ‚ āϤāĻžāϞāĻŋāĻ•āĻž āĻĨ⧇āϕ⧇ āϏāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻŦ⧇
console.log(myLinkedList); // āĻāĻ–āύ āϤāĻžāϞāĻŋāĻ•āĻžāϝāĻŧ ā§§ā§§ -&gt; ā§­ āĻĨāĻžāĻ•āĻŦ⧇, āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻšāĻŦ⧇ 2
Enter fullscreen mode Exit fullscreen mode

āĻĢāϞāĻžāĻĢāϞ

  • āĻĒā§āϰāĻĨāĻŽ āϰāĻŋāĻŽā§āĻ­ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāϟāĻŋ āϏāĻĢāϞāĻ­āĻžāĻŦ⧇ ā§¨ā§Š āύ⧋āĻĄāϕ⧇ āϏāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧ āĻāĻŦāĻ‚ āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤
  • āϤāĻžāϞāĻŋāĻ•āĻž āĻāĻ–āύ ā§§ā§§ -> ā§­ āϰ⧂āĻĒ⧇ āĻĨāĻžāĻ•āĻŦ⧇ āĻāĻŦāĻ‚ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻšāĻŦ⧇ ⧍āĨ¤

āĻāĻŦāĻ‚ āĻāχāĻ­āĻžāĻŦ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āϰāĻŋāĻŽā§āĻ­ (Remove) āĻŽā§‡āĻĨāĻĄ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ⧀ āĻšāϝāĻŧ⧇āϛ⧇!

đŸ”Ĩ13-Reverse Linked List
<br>
Enter fullscreen mode Exit fullscreen mode

đŸ”Ĩ13-āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āϰāĻŋāĻ­āĻžāĻ°ā§āϏ (Reverse) āĻŽā§‡āĻĨāĻĄ

āĻāĻ–āύ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āϰāĻŋāĻ­āĻžāĻ°ā§āϏ (Reverse) āĻŽā§‡āĻĨāĻĄāϟāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻŦāĨ¤ āϰāĻŋāĻ­āĻžāĻ°ā§āϏ āĻŽā§‡āĻĨāĻĄāϟāĻŋ āĻāĻ•āϟāĻŋ āϞāĻŋāĻ™ā§āĻ•āĻĄ āϞāĻŋāĻ¸ā§āĻŸā§‡āϰ āύ⧋āĻĄāϗ⧁āϞāĻŋāϕ⧇ āωāĻ˛ā§āĻŸā§‡ āĻĻ⧇āϝāĻŧāĨ¤

āϰāĻŋāĻ­āĻžāĻ°ā§āϏ āĻŽā§‡āĻĨāĻĄā§‡āϰ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ

  1. āĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ: āĻĒā§āϰāĻĨāĻŽā§‡ āĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞāϕ⧇ āĻāϕ⧇ āĻ…āĻĒāϰ⧇āϰ āĻĻāĻŋāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤
  2. āύ⧋āĻĄāϗ⧁āϞāĻŋāϰ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ: āĻĒā§āϰāϤāĻŋāϟāĻŋ āύ⧋āĻĄā§‡āϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰāϕ⧇ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤
  3. āĻĢāϞāĻžāĻĢāϞ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž: āĻĒ⧁āϰ⧋ āωāĻ˛ā§āϟāĻžāύ⧋ āϤāĻžāϞāĻŋāĻ•āĻž āĻĢ⧇āϰāϤ āĻĻāĻŋāϤ⧇ āĻšāĻŦ⧇āĨ¤

āϕ⧋āĻĄāĻŋāĻ‚ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž

reverse() {
    // ā§§. āĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž
    let temp = this.head; // āĻŸā§‡āĻŽā§āĻĒ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻšā§‡āĻĄāϕ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇
    this.head = this.tail; // āĻšā§‡āĻĄāϕ⧇ āĻŸā§‡āχāϞ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻž
    this.tail = temp; // āĻŸā§‡āχāϞāϕ⧇ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āĻšā§‡āĻĄā§‡ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻž

    let next = null; // āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ
    let previous = null; // āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ

    // ⧍. āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻŽāĻ§ā§āϝ āĻĻāĻŋāϝāĻŧ⧇ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻ•āϰāĻž
    while (temp) {
        next = temp.next; // āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž
        temp.next = previous; // āĻŦāĻ°ā§āϤāĻŽāĻžāύ āύ⧋āĻĄā§‡āϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž
        previous = temp; // āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž
        temp = next; // āĻŸā§‡āĻŽā§āĻĒāϕ⧇ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡ āϏāϰāĻžāύ⧋
    }

    // ā§Š. āĻĢāϞāĻžāĻĢāϞ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž
    return this; // āĻĒ⧁āϰ⧋ āωāĻ˛ā§āϟāĻžāύ⧋ āϤāĻžāϞāĻŋāĻ•āĻž āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž
}
Enter fullscreen mode Exit fullscreen mode

āϕ⧋āĻĄ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ

  • āĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ: āĻĒā§āϰāĻĨāĻŽā§‡ let temp = this.head; āĻĻā§āĻŦāĻžāϰāĻž āĻŸā§‡āĻŽā§āĻĒ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋāĨ¤ āϤāĻžāϰāĻĒāϰ this.head = this.tail; āĻāĻŦāĻ‚ this.tail = temp; āĻĻā§āĻŦāĻžāϰāĻž āĻšā§‡āĻĄ āĻāĻŦāĻ‚ āĻŸā§‡āχāϞāϕ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻŋāĨ¤
  • āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ: while (temp) āĻĻā§āĻŦāĻžāϰāĻž āφāĻŽāϰāĻž āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻĒā§āϰāϤāĻŋāϟāĻŋ āύ⧋āĻĄā§‡āϰ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻŋāĨ¤
    • next = temp.next; āĻĻā§āĻŦāĻžāϰāĻž āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻŋāĨ¤
    • temp.next = previous; āĻĻā§āĻŦāĻžāϰāĻž āĻŦāĻ°ā§āϤāĻŽāĻžāύ āύ⧋āĻĄā§‡āϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻŋāĨ¤
    • previous = temp; āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻŋāĨ¤
    • temp = next; āĻĻā§āĻŦāĻžāϰāĻž āĻŸā§‡āĻŽā§āĻĒāϕ⧇ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āύ⧋āĻĄā§‡ āϏāϰāĻžāχāĨ¤
  • āĻĢāϞāĻžāĻĢāϞ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž: āĻļ⧇āώ⧇, return this; āĻĻā§āĻŦāĻžāϰāĻž āĻĒ⧁āϰ⧋ āωāĻ˛ā§āϟāĻžāύ⧋ āϤāĻžāϞāĻŋāĻ•āĻž āĻĢ⧇āϰāϤ āĻĻāĻŋāχāĨ¤
let myLinkedList = new LinkedList(1); // ā§§ āĻŽāĻžāύ āϏāĻš āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϞāĻŋāĻ™ā§āϕ⧇āĻĄ āϞāĻŋāĻ¸ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāĻž
myLinkedList.push(2); // ⧍ āĻŽāĻžāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž
myLinkedList.push(3); // ā§Š āĻŽāĻžāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž

console.log(myLinkedList.reverse()); // āĻāϟāĻŋ āωāĻ˛ā§āϟāĻžāύ⧋ āϤāĻžāϞāĻŋāĻ•āĻž āĻĢ⧇āϰāϤ āĻĻ⧇āĻŦ⧇
Enter fullscreen mode Exit fullscreen mode

āĻĢāϞāĻžāĻĢāϞ

  • āϰāĻŋāĻ­āĻžāĻ°ā§āϏ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āϤāĻžāϞāĻŋāĻ•āĻž āĻāĻ–āύ ā§Š -> ⧍ -> ā§§ āϰ⧂āĻĒ⧇ āĻĨāĻžāĻ•āĻŦ⧇, āϝ⧇āĻ–āĻžāύ⧇ āĻšā§‡āĻĄ āĻāĻ–āύ ā§Š āĻāĻŦāĻ‚ āĻŸā§‡āχāϞ ā§§āĨ¤

āĻāĻŦāĻ‚ āĻāχāĻ­āĻžāĻŦ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āϰāĻŋāĻ­āĻžāĻ°ā§āϏ (Reverse) āĻŽā§‡āĻĨāĻĄ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ⧀ āĻšāϝāĻŧ⧇āϛ⧇!

Full Code

class Node {
    constructor(value){
        this.value = value;
        this.next = null;
    }
}

class LinkedList {
    constructor(value) {
        const newNode = new Node(value);
        this.head = newNode;
        this.tail = this.head;
        this.length = 1;
    }

    printList() {
        let temp = this.head;
        while (temp !== null) {
            console.log(temp.value);
            temp = temp.next;
        }
    }

    getHead() {
        if (this.head === null) {
            console.log("Head: null");
        } else {
            console.log("Head: " + this.head.value);
        }
    }

    getTail() {
        if (this.tail === null) {
            console.log("Tail: null");
        } else {
            console.log("Tail: " + this.tail.value);
        }
    }

    getLength() {
        console.log("Length: " + this.length);
    }

    makeEmpty() {
        this.head = null;
        this.tail = null;
        this.length = 0;
    }

    push(value) {
        const newNode = new Node(value);
        if (!this.head) {
            this.head = newNode;
            this.tail = newNode;
        } else {
            this.tail.next = newNode;
            this.tail = newNode;
        }
        this.length++;
        return this;
    }

    pop() {
        if (this.length === 0) return undefined;
        let temp = this.head;
        let pre = this.head;
        while (temp.next) {
            pre = temp;
            temp = temp.next;
        }
        this.tail = pre;
        this.tail.next = null;
        this.length--;
        if (this.length === 0) {
            this.head = null;
            this.tail = null;
        }
        return temp;
    }

    unshift(value) {
        const newNode = new Node(value);
        if (!this.head) {
            this.head = newNode;
            this.tail = newNode;
        } else {
            newNode.next = this.head;
            this.head = newNode;
        }
        this.length++;
        return this;
    }

    shift() {
        if (this.length === 0) return undefined;
        let temp = this.head;
        this.head = this.head.next;
        this.length--;
        if (this.length === 0) {
            this.tail = null;
        }
        temp.next = null;
        return temp;
    }

    get(index) {
        if (index < 0 || index >= this.length) return undefined;
        let temp = this.head;
        for (let i = 0; i < index; i++) {
            temp = temp.next;
        }
        return temp;
    }

    set(index, value) {
        let temp = this.get(index);
        if (temp) {
            temp.value = value;
            return true;
        }
        return false;
    }

    insert(index, value) {
        if (index < 0 || index > this.length) return false;
        if (index === this.length) return this.push(value);
        if (index === 0) return this.unshift(value);

        const newNode = new Node(value);
        const temp = this.get(index - 1);
        newNode.next = temp.next;
        temp.next = newNode;
        this.length++;
        return true;
    }

    remove(index) {
        if (index < 0 || index >= this.length) return undefined;
        if (index === 0) return this.shift();
        if (index === this.length - 1) return this.pop();

        const before = this.get(index - 1);
        const temp = before.next;

        before.next = temp.next;
        temp.next = null;
        this.length--;
        return temp;
    }

    reverse() {
        let temp = this.head;
        this.head = this.tail;
        this.tail = temp;
        let next = temp.next;
        let prev = null;
        for (let i = 0; i < this.length; i++) {
            next = temp.next;
            temp.next = prev;
            prev = temp;
            temp = next;
        }
    }  

}


function test() {
    let myLinkedList = new LinkedList(1);
    myLinkedList.push(2);
    myLinkedList.push(3);
    myLinkedList.push(4);

    console.log("LL before reverse():");
    myLinkedList.printList();

    myLinkedList.reverse();

    console.log("\nLL after reverse():");
    myLinkedList.printList();
}


test();


Enter fullscreen mode Exit fullscreen mode

Top comments (0)