đĨ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>
đĨ01- Linked List āĻāĻŦāĻ Array
āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰāĻĨāĻŽ āĻĄā§āĻāĻž āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰ āϝāĻž āĻāĻŽāϰāĻž āϤā§āϰāĻŋ āĻāϰāϤ⧠āϝāĻžāĻā§āĻāĻŋ, āϝāĻž āĻāĻŋāĻā§āĻāĻž important. āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻāĻā§āϞāĻŋ āĻĒāϰāĻŋāĻāϝāĻŧ āĻāϰāĻžāύā§āϰ āĻāύā§āϝ, āĻāĻŽāĻŋ āĻāĻāĻŋ āϏā§āĻ āĻĄā§āĻāĻž āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰā§āϰ āϏāĻžāĻĨā§ āϤā§āϞāύāĻž āĻāϰāĻŦ āϝāĻž āĻāĻāĻŋ āϏāĻŦāĻā§āϝāĻŧā§ āĻŦā§āĻļāĻŋ āϤā§āϞāύāĻž āĻāϰāĻž āĻšāϝāĻŧ, āĻāĻŦāĻ āϤāĻž āĻšāϞ āĻ ā§āϝāĻžāϰā§āĨ¤
āĻ ā§āϝāĻžāϰā§āϰ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ
- index: āĻ ā§āϝāĻžāϰā§āĻā§āϞāĻŋāϰ āĻāĻāĻāĻŋ index āĻĨāĻžāĻā§, āϝāĻž āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāύāĻā§ āĻāĻŋāĻšā§āύāĻŋāϤ āĻāϰā§āĨ¤
- āĻŽā§āĻŽāϰāĻŋāϤ⧠āĻ āĻŦāϏā§āĻĨāĻžāύ: āĻ ā§āϝāĻžāϰ⧠āĻāĻĒāĻžāĻĻāĻžāύāĻā§āϞāĻŋ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻāĻāĻžāĻŦā§ āĻŽā§āĻŽāϰāĻŋāϤ⧠āϏāĻāϰāĻā§āώāĻŋāϤ āĻšāϝāĻŧāĨ¤
āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ
- index: āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻāĻā§āϞāĻŋāϰ āĻā§āύāĻ āϏā§āĻāĻ āύā§āĻāĨ¤
- āĻŽā§āĻŽāϰāĻŋāϤ⧠āĻ āĻŦāϏā§āĻĨāĻžāύ: āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻāĻĒāĻžāĻĻāĻžāύāĻā§āϞāĻŋ āĻŽā§āĻŽāϰāĻŋāϤ⧠āϝā§āĻā§āύ⧠āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰ⧠āĻāĻŦāĻ āĻāĻāĻŋ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻ āύāϝāĻŧāĨ¤
āĻā§āϰāĻžāĻĢāĻŋāĻāĻžāϞ āĻāĻĒāϏā§āĻĨāĻžāĻĒāύ
āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻāĻĒāĻžāĻĻāĻžāύāĻā§āϞāĻŋāĻā§ āĻā§āϰāĻžāĻĢāĻŋāĻā§āϝāĻžāϞāĻāĻžāĻŦā§ āĻāĻĒāϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻŽāϰāĻž āϏāĻŦā§āĻ āĻŦāϰā§āĻāĻā§āώā§āϤā§āϰā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠āĻŦā§āĻā§āύāĻŋ āĻŦā§āϤā§āϤ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦāĨ¤
đ đ đ
- Head and Tail: āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§ āĻāĻāĻāĻŋ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻĨāĻžāĻā§ āϝāĻžāĻā§ "āĻšā§āĻĄ" āĻŦāϞāĻž āĻšāϝāĻŧ, āϝāĻž āĻĒā§āϰāĻĨāĻŽ āĻāĻāĻā§āĻŽāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰā§, āĻāĻŦāĻ āĻāĻāĻāĻŋ "āĻā§āĻāϞ" āĻĨāĻžāĻā§, āϝāĻž āĻļā§āώ āĻāĻāĻā§āĻŽāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰā§āĨ¤
-
āϞāĻŋāĻā§āĻ: āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāĻāĻā§āĻŽ āĻĒāϰāĻŦāϰā§āϤ⧠āĻāĻāĻā§āĻŽā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰā§, āĻāĻŦāĻ āĻļā§āώ āĻāĻāĻā§āĻŽāĻāĻŋ
null
āĻāϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰā§āĨ¤ āϤāĻžāĻ āĻāĻĒāύāĻŋ "null terminated list" āĻļāĻŦā§āĻĻāĻāĻŋ āĻļā§āύāϤ⧠āĻĒāĻžāĻŦā§āύāĨ¤
āϏāĻžāϰāϏāĻāĻā§āώā§āĻĒ
āĻ ā§āϝāĻžāϰā§āĻā§āϞāĻŋ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻāĻāĻžāĻŦā§ āĻŽā§āĻŽāϰāĻŋāϤ⧠āϏāĻāϰāĻā§āώāĻŋāϤ āĻšāϝāĻŧ, āϝā§āĻāĻžāύ⧠āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻāĻā§āϞāĻŋ āϝā§āĻā§āύ⧠āϏā§āĻĨāĻžāύ⧠āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻ āϤā§āϞāύāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻŽāϰāĻž āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻ āĻāĻŦāĻ āĻ ā§āϝāĻžāϰā§āϰ āĻŽāϧā§āϝ⧠āĻŽā§āϞāĻŋāĻ āĻĒāĻžāϰā§āĻĨāĻā§āϝāĻā§āϞāĻŋ āĻŦā§āĻāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤
đĨ02- āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻ āĻāĻŦāĻ āĻŦāĻŋāĻ āĻ (Big O)
<br>
đĨ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)
class LinkedList {
constructor(value) {
this.head = { value: value, next: null }; // āĻšā§āĻĄ āύā§āĻĄ āĻļā§āϰ⧠āĻāϰāĻž
this.length = 1; // āĻĻā§āϰā§āĻā§āϝ āĻā§āϰā§āϝāĻžāĻ āĻāϰāĻž
}
push(value) {
// āĻļā§āώā§āϰ āĻĻāĻŋāĻā§ āύāϤā§āύ āύā§āĻĄ āϝā§āĻ āĻāϰāĻžāϰ āĻŽā§āĻĨāĻĄ
}
unshift(value) {
// āĻļā§āϰā§āϤ⧠āύāϤā§āύ āύā§āĻĄ āϝā§āĻ āĻāϰāĻžāϰ āĻŽā§āĻĨāĻĄ
}
insertAt(index, value) {
// āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϏā§āĻāĻā§ āĻāĻāĻāĻŋ āύā§āĻĄ āϏāύā§āύāĻŋāĻŦā§āĻļ āĻāϰāĻžāϰ āĻŽā§āĻĨāĻĄ
}
remove(index) {
// āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϏā§āĻāĻ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āύā§āĻĄ āĻ
āĻĒāϏāĻžāϰāĻŖ āĻāϰāĻžāϰ āĻŽā§āĻĨāĻĄ
}
pop() {
// āĻļā§āώ āύā§āĻĄ āĻ
āĻĒāϏāĻžāϰāĻŖ āĻāϰāĻžāϰ āĻŽā§āĻĨāĻĄ
}
shift() {
// āĻĒā§āϰāĻĨāĻŽ āύā§āĻĄ āĻ
āĻĒāϏāĻžāϰāĻŖ āĻāϰāĻžāϰ āĻŽā§āĻĨāĻĄ
}
}
đĨ03- āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻ
āύā§āϤāϰā§āύāĻŋāĻšāĻŋāϤ āĻāĻ āύ
<br>
đĨ03- āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ Internal Structure
āĻāĻāύ āĻāĻŽāϰāĻž āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻ āύā§āϤāϰā§āύāĻŋāĻšāĻŋāϤ āĻāĻ āύ āύāĻŋāϝāĻŧā§ āĻāϞā§āĻāύāĻž āĻāϰāĻŦāĨ¤ āĻāϏā§āύ āĻĻā§āĻāĻŋ āĻāĻāĻŋ āĻāϏāϞ⧠āĻā§āĻāĻžāĻŦā§ āϤā§āϰāĻŋ āĻšāϝāĻŧāĨ¤
āύā§āĻĄā§āϰ āĻāĻ āύ
āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāύāĻā§ āύā§āĻĄ āĻŦāϞāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻāĻŋ āύā§āĻĄā§ āĻĻā§āĻāĻŋ āĻĒā§āϰāϧāĻžāύ āĻāĻĒāĻžāĻĻāĻžāύ āĻĨāĻžāĻā§:
- āĻŽāĻžāύ (Value): āĻāĻāĻŋ āύā§āĻĄā§āϰ āĻŽā§āϞ āϤāĻĨā§āϝāĨ¤
- āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ (Pointer): āĻāĻāĻŋ āĻĒāϰāĻŦāϰā§āϤ⧠āύā§āĻĄā§āϰ āĻ āĻŋāĻāĻžāύāĻžāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰā§āĨ¤
āĻāĻāĻāĻŋ āύā§āĻĄā§āϰ āĻāĻ āύ āύāĻŋāĻā§āϰ āĻŽāϤ⧠āĻšāϤ⧠āĻĒāĻžāϰā§:
{
value: 7,
next:
}
āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§ āύā§āĻĄ āϝā§āĻ āĻāϰāĻž
āϝāĻāύ āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āύāϤā§āύ āύā§āĻĄ (āϝā§āĻŽāύ ā§Ē) āϝā§āĻ āĻāϰāĻŋ, āϤāĻāύ āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰāĻĨāĻŽā§ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāϤ⧠āĻšāĻŦā§ āϝ⧠āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āύā§āĻĄ (āϝā§āĻŽāύ ā§) āύāϤā§āύ āύā§āĻĄā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰā§āĨ¤ āĻāĻāĻŋ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻŽāϰāĻž ā§ āĻāϰ next
āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻā§ āύāϤā§āύ āύā§āĻĄā§āϰ āĻ āĻŋāĻāĻžāύāĻžāϝāĻŧ āϏā§āĻ āĻāϰāĻŋāĨ¤
node7.next = node4; // ā§ āύā§āĻĄāĻāĻŋ ā§Ē āύā§āĻĄā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰā§
āĻāĻāύ, 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; // āĻā§āĻāϞ āĻāĻĒāĻĄā§āĻ āĻāϰāĻž
}
}
}
āĻāĻĒāϏāĻāĻšāĻžāϰ
āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻ āĻšāϞ āĻāĻāĻāĻŋ āĻĄāĻžāĻāύāĻžāĻŽāĻŋāĻ āĻĄā§āĻāĻž āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰ āϝāĻž āĻŦāĻŋāĻāĻŋāύā§āύ āϧāϰāύā§āϰ āĻ āĻĒāĻžāϰā§āĻļāύ āϏāĻŽā§āĻĒāĻžāĻĻāύā§āϰ āĻāύā§āϝ āĻā§āĻŦāĻ āĻāĻžāϰā§āϝāĻāϰāĨ¤ āĻĒā§āϰāϤāĻŋāĻāĻŋ āύā§āĻĄā§ āϤāĻĨā§āϝ āĻāĻŦāĻ āĻĒāϰāĻŦāϰā§āϤ⧠āύā§āĻĄā§āϰ āĻ āĻŋāĻāĻžāύāĻž āĻĨāĻžāĻā§, āϝāĻž āĻāĻŽāĻžāĻĻā§āϰāĻā§ āϏāĻšāĻā§āĻ āύāϤā§āύ āĻāĻĒāĻžāĻĻāĻžāύ āϝā§āĻā§āϤ āĻāϰāϤ⧠āĻāĻŦāĻ āĻŽā§āĻā§ āĻĢā§āϞāϤ⧠āĻĻā§āϝāĻŧāĨ¤ āĻāĻ āĻāĻ āύāĻāĻŋ āĻāĻŽāĻžāĻĻā§āϰāĻā§ āĻŽā§āĻŽāϰāĻŋ āĻŦā§āϝāĻŦāϏā§āĻĨāĻžāĻĒāύāĻžāϝāĻŧ āύāĻŽāύā§āϝāĻŧāϤāĻž āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āĨ¤
āĻāĻŦāĻ āĻāĻāĻŋāĻ āĻāĻŋāϞ āĻāĻŽāĻžāĻĻā§āϰ āϞāĻŋāĻā§āĻā§āĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻ āύā§āϤāϰā§āύāĻŋāĻšāĻŋāϤ āĻāĻ āύ āύāĻŋāϝāĻŧā§ āĻāϞā§āĻāύāĻžāĨ¤
đĨ04- āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ Constructor
<br>
đĨ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
}
āϏāĻŦāĻā§āϞ⧠āĻĒāĻĻā§āϧāϤāĻŋ āύāϤā§āύ āύā§āĻĄ āϤā§āϰāĻŋ āĻāϰā§, āϤāĻžāĻ āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āĻāϞāĻžāĻĻāĻž āĻā§āϞāĻžāϏ āϤā§āϰāĻŋ āĻāϰāĻŦ āϝāĻžāĻā§ āĻāĻŽāϰāĻž Node
āĻŦāϞāĻŦāĨ¤ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒāĻĻā§āϧāϤāĻŋ āϝāĻāύ āĻāĻāĻāĻŋ āύā§āĻĄ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§, āϤāĻāύ āĻāĻāĻŋ āĻāĻ āĻā§āϞāĻžāϏāĻāĻŋ āĻāϞ āĻāϰāĻŦā§āĨ¤
â āύā§āĻĄ āĻā§āϞāĻžāϏ Constructor
āύā§āĻĄ āĻā§āϞāĻžāϏā§āϰ āĻāĻ āύ āύāĻŋāĻā§āϰ āĻŽāϤ⧠āĻšāĻŦā§:
class Node {
constructor(value) {
this.value = value; // āύā§āĻĄā§āϰ āĻŽāĻžāύ
this.next = null; // āĻĒāϰāĻŦāϰā§āϤ⧠āύā§āĻĄā§āϰ āĻāύā§āϝ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ
}
}
// node class
class MyNode {
constructor(value) {
this.value = value;
this.next = null;
}
}
const newNode_4 = new MyNode(4); //{value:4, next:null}
â āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻ Constructor
āĻāĻāύ āĻāϏā§āύ āĻāĻŽāĻžāĻĻā§āϰ āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻāύāϏā§āĻā§āϰāĻžāĻā§āĻāϰ āϤā§āϰāĻŋ āĻāϰāĻŋ:
class LinkedList {
constructor(value) {
const newNode = new Node(value); // āύāϤā§āύ āύā§āĻĄ āϤā§āϰāĻŋ āĻāϰāĻž
this.head = newNode; // āĻšā§āĻĄāĻā§ āύāϤā§āύ āύā§āĻĄā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻž
this.tail = newNode; // āĻā§āĻāϞāĻā§ āĻāĻāĻ āύā§āĻĄā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻž
this.length = 1; // āĻĻā§āϰā§āĻā§āϝ ā§§ āϏā§āĻ āĻāϰāĻž
}
}
āύāϤā§āύ āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻ āϤā§āϰāĻŋ āĻāϰāĻž
āύāϤā§āύ āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻ āϤā§āϰāĻŋ āĻāϰāϤā§, āĻāĻĒāύāĻŋ āύāĻŋāĻā§āϰ āĻā§āĻĄāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ:
const myLinkedList = new LinkedList(4); // ā§Ē āĻŽāĻžāύ āϏāĻš āĻāĻāĻāĻŋ āύāϤā§āύ āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻ āϤā§āϰāĻŋ āĻāϰāĻž
āĻĄā§āĻāĻā§āϞāϏ⧠āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž
āĻāĻāύ āĻāϏā§āύ āĻĄā§āĻāĻā§āϞāϏ⧠āĻā§āĻĄāĻāĻŋ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻŋāĨ¤
- āĻĒā§āϰāĻĨāĻŽā§, āĻāĻŽāϰāĻž
new LinkedList(4)
āĻāϞ āĻāϰāĻŋāĨ¤ - āĻāĻāĻŋ āĻāĻāĻāĻŋ āύāϤā§āύ āύā§āĻĄ āϤā§āϰāĻŋ āĻāϰāĻŦā§ āϝāĻžāϰ āĻŽāĻžāύ ā§Ē āĻāĻŦāĻ āĻāĻāĻŋ āĻšā§āĻĄ āĻ āĻā§āĻāϞ āĻāĻāϝāĻŧāĻā§āĻ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻŦā§āĨ¤
- āϝāĻĻāĻŋ āĻāĻŽāϰāĻž
myLinkedList
āϞāĻŋāĻāĻŋ āĻāĻŦāĻ āĻāύā§āĻāĻžāϰ āĻāĻžāĻĒāĻŋ, āϤāĻžāĻšāϞ⧠āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦ āϝ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻāĻāĻāĻŋ āĻāĻžāĻ āĻāϰāĻā§ āĻāĻŽāύ āϞāĻŋāĻā§āĻā§āĻĄ āϞāĻŋāϏā§āĻ āĻāĻā§āĨ¤
āĻĢāϞāĻžāĻĢāϞ
LinkedList {
head: Node { value: 4, next: null },
tail: Node { value: 4, next: null },
length: 1
}
āĻāĻāĻŋ āĻĻā§āĻāĻžāϝāĻŧ āϝ⧠āĻšā§āĻĄ āĻāĻŦāĻ āĻā§āĻāϞ āĻāĻāϝāĻŧāĻ āĻāĻāĻ āĻ āĻŦāĻā§āĻā§āĻāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻā§ āĻāĻŦāĻ āĻĻā§āϰā§āĻā§āϝ ā§§āĨ¤
āĻāĻŦāĻ āĻāĻāĻāĻžāĻŦā§ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻāĻāĻŋ āĻāĻžāϰā§āϝāĻāϰ⧠āϞāĻŋāĻā§āĻā§āĻĄ āϞāĻŋāϏā§āĻ āϤā§āϰāĻŋ āĻšāϝāĻŧā§āĻā§!
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
}
*/
đĨ05- āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻĒā§āĻļ (Push) āĻŽā§āĻĨāĻĄ
<br>
đĨ05- āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻĒā§āĻļ (Push) āĻŽā§āĻĨāĻĄ
āĻāĻāύ āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻāύā§āϝ āĻĒā§āĻļ (Push) āĻŽā§āĻĨāĻĄ āϤā§āϰāĻŋ āĻāϰāĻŦāĨ¤ āĻāϏā§āύ āĻĒā§āϰāĻĨāĻŽā§ āĻĒāĻĻāĻā§āώā§āĻĒāĻā§āϞ⧠āĻĻā§āĻā§ āύā§āĻāϝāĻŧāĻž āϝāĻžāĻāĨ¤
āĻĒā§āĻļ āĻŽā§āĻĨāĻĄā§āϰ āĻĒāĻĻāĻā§āώā§āĻĒ
- āύāϤā§āύ āύā§āĻĄ āϤā§āϰāĻŋ āĻāϰāĻž: āĻĒā§āϰāĻĨāĻŽā§ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻāĻāĻŋ āύāϤā§āύ āύā§āĻĄ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
- āϞāĻžāϏā§āĻ āύā§āĻĄā§āϰ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϏā§āĻ āĻāϰāĻž: āϤāĻžāϰāĻĒāϰ, āĻļā§āώ āύā§āĻĄāĻāĻŋ āύāϤā§āύ āύā§āĻĄā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻŦā§āĨ¤
- āĻā§āĻāϞ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āĻāĻĒāĻĄā§āĻ āĻāϰāĻž: āĻā§āĻāϞ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻāĻŋāĻ āύāϤā§āύ āύā§āĻĄā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻŦā§āĨ¤
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; // āĻĒā§āϰ⧠āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻ āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž
}
āĻā§āĻĄ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ
-
āύāϤā§āύ āύā§āĻĄ āϤā§āϰāĻŋ:
const newNode = new Node(value);
āĻāĻ āϞāĻžāĻāύ⧠āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āύāϤā§āύ āύā§āĻĄ āϤā§āϰāĻŋ āĻāϰāĻāĻŋāĨ¤ -
āĻšā§āĻĄ āĻā§āĻ:
if (!this.head)
āĻāĻ āĻļāϰā§āϤāĻāĻŋ āĻĒāϰā§āĻā§āώāĻž āĻāϰ⧠āϝ⧠āĻšā§āĻĄ āĻāĻžāϞāĻŋ āĻāĻŋ āύāĻžāĨ¤ āϝāĻĻāĻŋ āĻāĻžāϞāĻŋ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠āĻšā§āĻĄ āĻāĻŦāĻ āĻā§āĻāϞ āĻāĻāϝāĻŧāĻ āύāϤā§āύ āύā§āĻĄā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰā§āĨ¤ - āύāϤā§āύ āύā§āĻĄ āϝā§āĻā§āϤ āĻāϰāĻž: āϝāĻĻāĻŋ āĻšā§āĻĄ āĻāĻžāϞāĻŋ āύāĻž āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠āĻļā§āώ āύā§āĻĄā§āϰ āĻĒāϰāĻŦāϰā§āϤ⧠āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻā§ āύāϤā§āύ āύā§āĻĄā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻŋ āĻāĻŦāĻ āĻā§āĻāϞ āĻāĻĒāĻĄā§āĻ āĻāϰāĻŋāĨ¤
-
āĻĻā§āϰā§āĻā§āϝ āĻŦāĻžāĻĄāĻŧāĻžāύā§:
this.length++
āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻŽāϰāĻž āϞāĻŋāĻā§āĻā§āĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻĻā§āϰā§āĻā§āϝ āĻŦāĻžāĻĄāĻŧāĻžāĻā§āĻāĻŋāĨ¤ -
āĻĢāĻŋāϰāĻŋāϝāĻŧā§ āĻĻā§āĻāϝāĻŧāĻž:
return this;
āĻĒā§āϰ⧠āϞāĻŋāĻā§āĻā§āĻĄ āϞāĻŋāϏā§āĻ āĻĢā§āϰāϤ āĻĻā§āϝāĻŧāĨ¤
āĻĄā§āĻāĻā§āϞāϏ⧠āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž
āĻāĻāύ āĻāϏā§āύ āĻĄā§āĻāĻā§āϞāϏ⧠āĻā§āĻĄāĻāĻŋ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻŋ:
let myLinkedList = new LinkedList(7); // ā§ āĻŽāĻžāύ āϏāĻš āĻāĻāĻāĻŋ āύāϤā§āύ āϞāĻŋāĻā§āĻā§āĻĄ āϞāĻŋāϏā§āĻ āϤā§āϰāĻŋ āĻāϰāĻž
myLinkedList.push(4); // ā§Ē āĻŽāĻžāύ āϝā§āĻā§āϤ āĻāϰāĻž
- āϝāĻāύ āĻāĻŽāϰāĻž
myLinkedList.push(4)
āĻāϞ āĻāϰāĻŋ, āĻāĻāĻŋ āĻĒā§āϰ⧠āϞāĻŋāĻā§āĻā§āĻĄ āϞāĻŋāϏā§āĻ āĻĢā§āϰāϤ āĻĻā§āĻŦā§āĨ¤ - āĻāĻŽāϰāĻž āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦ āϝ⧠āĻšā§āĻĄ ā§ āύā§āĻĄāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻā§ āĻāĻŦāĻ āĻā§āĻāϞ ā§Ē āύā§āĻĄāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻā§āĨ¤ āĻĻā§āϰā§āĻā§āϝ ⧍āĨ¤
āĻĢāϞāĻžāĻĢāϞ
LinkedList {
head: Node { value: 7, next: Node { value: 4, next: null } },
tail: Node { value: 4, next: null },
length: 2
}
đ˛ 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 --> 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);
āĻāĻŦāĻ āĻāĻāĻāĻžāĻŦā§ āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āĻļ āĻŽā§āĻĨāĻĄ āĻāĻžāϰā§āϝāĻāϰ⧠āĻšāϝāĻŧā§āĻā§!
đĨ06- āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻĒāĻĒ (Pop) āĻŽā§āĻĨāĻĄ
<br>
đĨ06- āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻĒāĻĒ (Pop) āĻŽā§āĻĨāĻĄ
āĻāĻāύ āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻāύā§āϝ āĻĒāĻĒ (Pop) āĻŽā§āĻĨāĻĄ āϤā§āϰāĻŋ āĻāϰāĻŦāĨ¤
đ āĻĒāĻĒ āĻŽā§āĻĨāĻĄā§āϰ āĻĒāĻĻāĻā§āώā§āĻĒ
- āĻļā§āώ āĻāĻāĻā§āĻŽ āĻ āĻĒāϏāĻžāϰāĻŖ: āĻĒāĻĒ āĻŽā§āĻĨāĻĄāĻāĻŋ āĻļā§āώ āĻāĻāĻā§āĻŽāĻāĻŋ āϏāϰāĻŋāϝāĻŧā§ āĻĻā§āĻŦā§ āĻāĻŦāĻ āĻā§āĻāϞāĻā§ āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āĻāĻāĻā§āĻŽā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻŦā§āĨ¤
- āĻ āĻĒāϏāĻžāϰāĻŋāϤ āĻāĻāĻā§āĻŽ āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž: āĻ āĻĒāϏāĻžāϰāĻŋāϤ āĻāĻāĻā§āĻŽāĻāĻŋ āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž āĻšāĻŦā§āĨ¤
đ āĻāĻ āĻā§āϏ
āĻāĻŽāĻžāĻĻā§āϰ āĻāĻŋāĻā§ āĻāĻ āĻā§āϏ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰāϤ⧠āĻšāĻŦā§:
- āĻļā§āύā§āϝ āĻāĻāĻā§āĻŽ: āϝāĻĻāĻŋ āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§ āĻā§āύāĻ āĻāĻāĻā§āĻŽ āύāĻž āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠āĻāĻŽāϰāĻž āĻāĻŋāĻā§ āĻ āĻĒāϏāĻžāϰāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋ āύāĻžāĨ¤
- āĻāĻāĻāĻŋ āĻāĻāĻā§āĻŽ: āϝāĻĻāĻŋ āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§ āĻŽāĻžāϤā§āϰ āĻāĻāĻāĻŋ āĻāĻāĻā§āĻŽ āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻŦāĻŋāĻļā§āώāĻāĻžāĻŦā§ āĻā§āĻĄ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
đāĻĒāĻĒ āĻŽā§āĻĨāĻĄā§āϰ Logic
- āĻā§āĻāϞāĻā§ āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āĻāĻāĻā§āĻŽā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻž: āĻāĻāĻŋ āĻāĻŋāĻā§āĻāĻž āĻāĻāĻŋāϞ, āĻāĻžāϰāĻŖ āĻāĻŽāĻžāĻĻā§āϰ āĻā§āĻāϞāĻā§ āĻŦāĻžāĻŽ āĻĻāĻŋāĻā§ āϏāϰāĻžāϤ⧠āĻšāĻŦā§āĨ¤
- āύā§āϏā§āĻā§āĻĄ āĻ āĻŦāĻā§āĻā§āĻ āĻšāĻŋāϏā§āĻŦā§ āĻĻā§āĻāϤ⧠āĻšāĻŦā§: āĻā§āĻāϞāĻā§ āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āĻāĻāĻā§āĻŽā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻŽāĻžāĻĻā§āϰ āĻšā§āĻĄ āĻĨā§āĻā§ āĻļā§āϰ⧠āĻāϰ⧠āĻĒā§āϰ⧠āϤāĻžāϞāĻŋāĻāĻžāĻāĻŋ āĻĒāĻžāϰ āĻšāϤ⧠āĻšāĻŦā§āĨ¤
đ āĻā§āĻĄāĻŋāĻ āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž
- āύāϤā§āύ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āϤā§āϰāĻŋ āĻāϰāĻž:
-
temp
: āĻāĻāĻŋ āĻļā§āώ āύā§āĻĄāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻŦā§āĨ¤ -
pre
: āĻāĻāĻŋ āĻļā§āώā§āϰ āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āύā§āĻĄāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻŦā§āĨ¤
- āϤāĻžāϞāĻŋāĻāĻžāϰ āĻŽāϧā§āϝ āĻĻāĻŋāϝāĻŧā§ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋ āĻāϰāĻž:
-
temp
āĻāϰnext
āϝāĻĻāĻŋ āĻ āύā§āϝ āύā§āĻĄāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰā§, āϤāĻžāĻšāϞā§pre
āĻā§ āĻāĻĒāĻĄā§āĻ āĻāϰā§āύ āĻāĻŦāĻtemp
āĻā§ āĻĒāϰāĻŦāϰā§āϤ⧠āύā§āĻĄā§ āϏāϰāĻžāύāĨ¤ - āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋ āĻāϞāϤ⧠āĻĨāĻžāĻāĻŦā§ āϝāϤāĻā§āώāĻŖ āύāĻž
temp.next
null
āĻšāϝāĻŧāĨ¤
- āĻā§āĻāϞ āĻāĻĒāĻĄā§āĻ āĻāϰāĻž:
- āĻā§āĻāϞāĻā§
pre
āĻāϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰā§āύāĨ¤ -
tail.next
āĻā§null
āϏā§āĻ āĻāϰā§āύ, āϝāĻž āĻļā§āώ āύā§āĻĄāĻāĻŋ āϏāϰāĻŋāϝāĻŧā§ āĻĻā§āĻŦā§āĨ¤
-
āĻ
āĻĒāϏāĻžāϰāĻŋāϤ āύā§āĻĄ āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž:
- āĻ
āĻŦāĻļā§āώā§,
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
}
āĻāĻāĻŋ āĻāĻŋāϞ āĻāĻŽāĻžāĻĻā§āϰ āĻĒāĻĒ āĻŽā§āĻĨāĻĄā§āϰ āĻāĻāĻāĻŋ āϏāĻāĻā§āώāĻŋāĻĒā§āϤ āĻŦāĻŋāĻŦāϰāĻŖāĨ¤
đ āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻĒāĻĒ (Pop) āĻŽā§āĻĨāĻĄ
āĻāĻāύ āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻĒāĻĒ (Pop) āĻŽā§āĻĨāĻĄāĻāĻŋ āĻā§āĻĄ āĻāϰāĻŦāĨ¤ āĻāĻ āĻŽā§āĻĨāĻĄāĻāĻŋ āĻļā§āώ āĻāĻāĻā§āĻŽāĻāĻŋ āϏāϰāĻŋāϝāĻŧā§ āĻĻā§āĻŦā§ āĻāĻŦāĻ āĻā§āĻāϞāĻā§ āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āĻāĻāĻā§āĻŽā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻŦā§āĨ¤
āĻĒāĻĒ āĻŽā§āĻĨāĻĄā§āϰ āĻĒāĻĻāĻā§āώā§āĻĒ
- āĻļā§āύā§āϝ āĻāĻāĻā§āĻŽ āĻā§āĻ āĻāϰāĻž: āĻĒā§āϰāĻĨāĻŽā§ āĻā§āĻ āĻāϰāϤ⧠āĻšāĻŦā§ āϝ⧠āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§ āĻā§āύ⧠āĻāĻāĻā§āĻŽ āĻāĻā§ āĻāĻŋāύāĻžāĨ¤
- āĻāĻāĻāĻŋ āĻāĻāĻā§āĻŽ āĻā§āĻ āĻāϰāĻž: āϝāĻĻāĻŋ āĻāĻāĻāĻŋ āĻŽāĻžāϤā§āϰ āĻāĻāĻā§āĻŽ āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠āĻšā§āĻĄ āĻāĻŦāĻ āĻā§āĻāϞ āĻāĻāϝāĻŧāĻ āϏā§āĻ āĻāĻāĻā§āĻŽā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻŦā§āĨ¤
- āĻĻā§āĻ āĻŦāĻž āϤāϤā§āϧāĻŋāĻ āĻāĻāĻā§āĻŽ āĻĨāĻžāĻāĻž: āϝāĻĻāĻŋ āĻĻā§āĻāĻŋ āĻŦāĻž āϤāĻžāϰ āĻŦā§āĻļāĻŋ āĻāĻāĻā§āĻŽ āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āύā§āĻĄā§ āϝāĻžāĻāϝāĻŧāĻžāϰ āĻāύā§āϝ āϤāĻžāϞāĻŋāĻāĻžāϰ āĻŽāϧā§āϝ āĻĻāĻŋāϝāĻŧā§ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
āĻā§āĻĄāĻŋāĻ āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž
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; // āĻ
āĻĒāϏāĻžāϰāĻŋāϤ āύā§āĻĄ āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž
}
āĻā§āĻĄ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ
-
āĻļā§āύā§āϝ āĻāĻāĻā§āĻŽ āĻā§āĻ:
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 āĻĢā§āϰāϤ āĻĻā§āĻŦā§ āĻāĻžāϰāĻŖ āϤāĻžāϞāĻŋāĻāĻž āĻāĻžāϞāĻŋ
āĻĢāϞāĻžāĻĢāϞ
- āĻĒā§āϰāĻĨāĻŽ āĻĒāĻĒ āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻāĻŋ ⧍ āύā§āĻĄ āĻĢā§āϰāϤ āĻĻā§āϝāĻŧ āĻāĻŦāĻ āϤāĻžāϞāĻŋāĻāĻžāϝāĻŧ ā§§ āύā§āĻĄ āĻĨāĻžāĻā§āĨ¤
- āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āĻĒāĻĒ āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻāĻŋ ā§§ āύā§āĻĄ āĻĢā§āϰāϤ āĻĻā§āϝāĻŧ āĻāĻŦāĻ āϤāĻžāϞāĻŋāĻāĻž āĻāĻžāϞāĻŋ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧāĨ¤
- āϤā§āϤā§āϝāĻŧ āĻĒāĻĒ āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻāĻŋ
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);
đĨ07- āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻāύāĻļāĻŋāĻĢāĻ (Unshift) āĻŽā§āĻĨāĻĄ
<br>
đĨ07- āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻāύāĻļāĻŋāĻĢāĻ (Unshift) āĻŽā§āĻĨāĻĄ
āĻāĻāύ āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻāύā§āϝ āĻāύāĻļāĻŋāĻĢāĻ (Unshift) āĻŽā§āĻĨāĻĄāĻāĻŋ āϞāĻŋāĻāĻŦāĨ¤ āĻāύāĻļāĻŋāĻĢāĻ āĻŽā§āĻĨāĻĄāĻāĻŋ āĻāĻāĻāĻŋ āύāϤā§āύ āύā§āĻĄāĻā§ āϤāĻžāϞāĻŋāĻāĻžāϰ āĻļā§āϰā§āϤ⧠āϝā§āĻā§āϤ āĻāϰā§āĨ¤
āĻāύāĻļāĻŋāĻĢāĻ āĻŽā§āĻĨāĻĄā§āϰ āĻĒāĻĻāĻā§āώā§āĻĒ
- āύāϤā§āύ āύā§āĻĄ āϤā§āϰāĻŋ āĻāϰāĻž: āĻĒā§āϰāĻĨāĻŽā§ āĻāĻāĻāĻŋ āύāϤā§āύ āύā§āĻĄ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
- āĻšā§āĻĄ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āĻāĻĒāĻĄā§āĻ āĻāϰāĻž: āύāϤā§āύ āύā§āĻĄāĻāĻŋ āĻŦāϰā§āϤāĻŽāĻžāύ āĻšā§āĻĄā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻŦā§āĨ¤
- āĻšā§āĻĄ āĻāĻŦāĻ āĻā§āĻāϞ āĻāĻĒāĻĄā§āĻ āĻāϰāĻž: āϝāĻĻāĻŋ āϤāĻžāϞāĻŋāĻāĻž āĻāĻžāϞāĻŋ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠āĻšā§āĻĄ āĻāĻŦāĻ āĻā§āĻāϞ āĻāĻāϝāĻŧāĻ āύāϤā§āύ āύā§āĻĄā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻŦā§āĨ¤
āĻā§āĻĄāĻŋāĻ āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž
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; // āĻĒā§āϰ⧠āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻ āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž
}
āĻā§āĻĄ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ
-
āύāϤā§āύ āύā§āĻĄ āϤā§āϰāĻŋ:
const newNode = new Node(value);
āĻāĻ āϞāĻžāĻāύ⧠āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āύāϤā§āύ āύā§āĻĄ āϤā§āϰāĻŋ āĻāϰāĻāĻŋāĨ¤ -
āĻšā§āĻĄ āĻā§āĻ:
if (!this.head)
āĻāĻ āĻļāϰā§āϤāĻāĻŋ āĻĒāϰā§āĻā§āώāĻž āĻāϰ⧠āϝ⧠āϤāĻžāϞāĻŋāĻāĻž āĻāĻžāϞāĻŋ āĻāĻŋ āύāĻžāĨ¤ āϝāĻĻāĻŋ āĻāĻžāϞāĻŋ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠āĻšā§āĻĄ āĻāĻŦāĻ āĻā§āĻāϞ āĻāĻāϝāĻŧāĻ āύāϤā§āύ āύā§āĻĄā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰā§āĨ¤ -
āύāϤā§āύ āύā§āĻĄ āϝā§āĻā§āϤ āĻāϰāĻž: āϝāĻĻāĻŋ āϤāĻžāϞāĻŋāĻāĻž āĻāĻžāϞāĻŋ āύāĻž āĻšāϝāĻŧ, āϤāĻžāĻšāϞā§
newNode.next = this.head;
āĻĻā§āĻŦāĻžāϰāĻž āύāϤā§āύ āύā§āĻĄā§āϰ āĻĒāϰāĻŦāϰā§āϤ⧠āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻā§ āĻŦāϰā§āϤāĻŽāĻžāύ āĻšā§āĻĄā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻŋ āĻāĻŦāĻ āĻĒāϰ⧠āĻšā§āĻĄ āĻāĻĒāĻĄā§āĻ āĻāϰāĻŋāĨ¤ -
āĻĻā§āϰā§āĻā§āϝ āĻŦāĻžāĻĄāĻŧāĻžāύā§:
this.length++
āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻŽāϰāĻž āϞāĻŋāĻā§āĻā§āĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻĻā§āϰā§āĻā§āϝ āĻŦāĻžāĻĄāĻŧāĻžāĻā§āĻāĻŋāĨ¤ -
āĻĢāĻŋāϰāĻŋāϝāĻŧā§ āĻĻā§āĻāϝāĻŧāĻž:
return this;
āĻĒā§āϰ⧠āϞāĻŋāĻā§āĻā§āĻĄ āϞāĻŋāϏā§āĻ āĻĢā§āϰāϤ āĻĻā§āϝāĻŧāĨ¤
āĻĄā§āĻāĻā§āϞāϏ⧠āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž
āĻāĻāύ āĻāϏā§āύ āĻĄā§āĻāĻā§āϞāϏ⧠āĻā§āĻĄāĻāĻŋ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻŋ:
let myLinkedList = new LinkedList(11); // ā§§ā§§ āĻŽāĻžāύ āϏāĻš āĻāĻāĻāĻŋ āύāϤā§āύ āϞāĻŋāĻā§āĻā§āĻĄ āϞāĻŋāϏā§āĻ āϤā§āϰāĻŋ āĻāϰāĻž
myLinkedList.unshift(4); // ā§Ē āĻŽāĻžāύ āϝā§āĻā§āϤ āĻāϰāĻž
- āϝāĻāύ āĻāĻŽāϰāĻž
myLinkedList.unshift(4)
āĻāϞ āĻāϰāĻŋ, āĻāĻāĻŋ āĻĒā§āϰ⧠āϞāĻŋāĻā§āĻā§āĻĄ āϞāĻŋāϏā§āĻ āĻĢā§āϰāϤ āĻĻā§āĻŦā§āĨ¤
āĻĢāϞāĻžāĻĢāϞ
LinkedList {
head: Node { value: 4, next: Node { value: 11, next: null } },
tail: Node { value: 11, next: null },
length: 2
}
āĻāĻŦāĻ āĻāĻāĻāĻžāĻŦā§ āĻāĻŽāĻžāĻĻā§āϰ āĻāύāĻļāĻŋāĻĢāĻ (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);
đĨ08- āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻļāĻŋāĻĢāĻ (Shift) āĻŽā§āĻĨāĻĄ
<br>
đĨ08 āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻļāĻŋāĻĢāĻ (Shift) āĻŽā§āĻĨāĻĄ
āĻāĻāύ āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻāύā§āϝ āĻļāĻŋāĻĢāĻ (Shift) āĻŽā§āĻĨāĻĄāĻāĻŋ āϞāĻŋāĻāĻŦāĨ¤ āĻļāĻŋāĻĢāĻ āĻŽā§āĻĨāĻĄāĻāĻŋ āϤāĻžāϞāĻŋāĻāĻžāϰ āĻĒā§āϰāĻĨāĻŽ āĻāĻāĻā§āĻŽāĻāĻŋ āϏāϰāĻŋāϝāĻŧā§ āĻĻā§āĻŦā§ āĻāĻŦāĻ āϏā§āĻ āĻāĻāĻā§āĻŽāĻāĻŋ āĻĢā§āϰāϤ āĻĻā§āĻŦā§āĨ¤
āĻļāĻŋāĻĢāĻ āĻŽā§āĻĨāĻĄā§āϰ āĻĒāĻĻāĻā§āώā§āĻĒ
- āĻļā§āύā§āϝ āĻāĻāĻā§āĻŽ āĻā§āĻ āĻāϰāĻž: āĻĒā§āϰāĻĨāĻŽā§ āĻā§āĻ āĻāϰāϤ⧠āĻšāĻŦā§ āϝ⧠āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§ āĻā§āύ⧠āĻāĻāĻā§āĻŽ āĻāĻā§ āĻāĻŋāύāĻžāĨ¤
- āĻāĻāĻāĻŋ āĻāĻāĻā§āĻŽ āĻĨāĻžāĻāĻž: āϝāĻĻāĻŋ āĻāĻāĻāĻŋ āĻŽāĻžāϤā§āϰ āĻāĻāĻā§āĻŽ āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠āĻšā§āĻĄ āĻāĻŦāĻ āĻā§āĻāϞ āĻāĻāϝāĻŧāĻ āϏā§āĻ āĻāĻāĻā§āĻŽā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāĻŦā§āĨ¤
- āĻĻā§āĻ āĻŦāĻž āϤāϤā§āϧāĻŋāĻ āĻāĻāĻā§āĻŽ āĻĨāĻžāĻāĻž: āϝāĻĻāĻŋ āĻĻā§āĻāĻŋ āĻŦāĻž āϤāĻžāϰ āĻŦā§āĻļāĻŋ āĻāĻāĻā§āĻŽ āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠āĻšā§āĻĄāĻā§ āĻĒāϰāĻŦāϰā§āϤ⧠āύā§āĻĄā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
āĻā§āĻĄāĻŋāĻ āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž
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; // āĻ
āĻĒāϏāĻžāϰāĻŋāϤ āύā§āĻĄ āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž
}
āĻā§āĻĄ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ
-
āĻļā§āύā§āϝ āĻāĻāĻā§āĻŽ āĻā§āĻ:
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 āĻĢā§āϰāϤ āĻĻā§āĻŦā§ āĻāĻžāϰāĻŖ āϤāĻžāϞāĻŋāĻāĻž āĻāĻžāϞāĻŋ
āĻĢāϞāĻžāĻĢāϞ
- āĻĒā§āϰāĻĨāĻŽ āĻļāĻŋāĻĢāĻ āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻāĻŋ ā§§ āύā§āĻĄ āĻĢā§āϰāϤ āĻĻā§āϝāĻŧ āĻāĻŦāĻ āϤāĻžāϞāĻŋāĻāĻžāϝāĻŧ ⧍ āύā§āĻĄ āĻĨāĻžāĻā§āĨ¤
- āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āĻļāĻŋāĻĢāĻ āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻāĻŋ ⧍ āύā§āĻĄ āĻĢā§āϰāϤ āĻĻā§āϝāĻŧ āĻāĻŦāĻ āϤāĻžāϞāĻŋāĻāĻž āĻāĻžāϞāĻŋ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧāĨ¤
- āϤā§āϤā§āϝāĻŧ āĻļāĻŋāĻĢāĻ āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻāĻŋ
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);
đĨ09 -āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻā§āĻ (Get) āĻŽā§āĻĨāĻĄ
<br>
đĨ09 -āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻā§āĻ (Get) āĻŽā§āĻĨāĻĄ
āĻāĻāύ āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻāύā§āϝ āĻā§āĻ (Get) āĻŽā§āĻĨāĻĄāĻāĻŋ āϤā§āϰāĻŋ āĻāϰāĻŦāĨ¤ āĻā§āĻ āĻŽā§āĻĨāĻĄāĻāĻŋ āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāύāĻĄā§āĻā§āϏ⧠āĻĨāĻžāĻāĻž āύā§āĻĄāĻāĻŋ āĻĢā§āϰāϤ āĻĻā§āϝāĻŧāĨ¤
āĻā§āĻ āĻŽā§āĻĨāĻĄā§āϰ āĻĒāĻĻāĻā§āώā§āĻĒ
- āĻāύāĻĄā§āĻā§āϏ āĻā§āĻ āĻāϰāĻž: āĻĒā§āϰāĻĨāĻŽā§ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāϤ⧠āĻšāĻŦā§ āϝ⧠āĻāύāĻĄā§āĻā§āϏāĻāĻŋ āĻŦā§āϧ āĻāĻŋāύāĻžāĨ¤
- āύā§āĻĄ āĻā§āĻāĻāĻž: āϝāĻĻāĻŋ āĻāύāĻĄā§āĻā§āϏ āĻŦā§āϧ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠āϤāĻžāϞāĻŋāĻāĻžāϰ āĻļā§āϰ⧠āĻĨā§āĻā§ āĻļā§āϰ⧠āĻāϰ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāύāĻĄā§āĻā§āϏ⧠āĻĒā§āĻāĻāĻžāϤ⧠āĻšāĻŦā§āĨ¤
- āύā§āĻĄ āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž: āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāύāĻĄā§āĻā§āϏā§āϰ āύā§āĻĄāĻāĻŋ āĻĢā§āϰāϤ āĻĻāĻŋāϤ⧠āĻšāĻŦā§āĨ¤
āĻā§āĻĄāĻŋāĻ āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž
get(index) {
// ā§§. āĻāύāĻĄā§āĻā§āϏ āĻā§āĻ āĻāϰāĻž
if (index < 0 || index >= this.length) {
return undefined; // āĻ
āĻŦā§āϧ āĻāύāĻĄā§āĻā§āϏ āĻšāϞ⧠undefined āĻĢā§āϰāϤ āĻĻāĻŋāύ
}
let temp = this.head; // āĻā§āĻŽā§āĻĒ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻšā§āĻĄāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰā§
// ⧍. āϤāĻžāϞāĻŋāĻāĻžāϰ āĻŽāϧā§āϝ āĻĻāĻŋāϝāĻŧā§ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋ āĻāϰāĻž
for (let i = 0; i < index; i++) {
temp = temp.next; // āĻā§āĻŽā§āĻĒāĻā§ āĻĒāϰāĻŦāϰā§āϤ⧠āύā§āĻĄā§ āϏāϰāĻžāύā§
}
return temp; // āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāύāĻĄā§āĻā§āϏā§āϰ āύā§āĻĄ āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž
}
āĻā§āĻĄ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ
-
āĻāύāĻĄā§āĻā§āϏ āĻā§āĻ:
if (index < 0 || index >= this.length)
āĻāĻ āĻļāϰā§āϤāĻāĻŋ āĻĒāϰā§āĻā§āώāĻž āĻāϰ⧠āϝ⧠āĻāύāĻĄā§āĻā§āϏ āĻŦā§āϧ āĻāĻŋāύāĻžāĨ¤ āϝāĻĻāĻŋ āĻ āĻŦā§āϧ āĻšāϝāĻŧ, āϤāĻžāĻšāϞā§undefined
āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧāĨ¤ -
āύā§āĻĄ āĻā§āĻāĻāĻž:
for (let i = 0; i < 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)); // āĻāĻāĻŋ ⧍ āύā§āĻĄ āĻĢā§āϰāϤ āĻĻā§āĻŦā§ (āĻŦā§āϧ āĻāύāĻĄā§āĻā§āϏ)
āĻĢāϞāĻžāĻĢāϞ
- āĻĒā§āϰāĻĨāĻŽ āĻā§āĻ āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻāĻŋ āĻ
āĻŦā§āϧ āĻāύāĻĄā§āĻā§āϏ (-1) āĻāϰ āĻāύā§āϝ
undefined
āĻĢā§āϰāϤ āĻĻā§āϝāĻŧāĨ¤ - āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āĻā§āĻ āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻāĻŋ āĻ
āĻŦā§āϧ āĻāύāĻĄā§āĻā§āϏ (10) āĻāϰ āĻāύā§āϝāĻ
undefined
āĻĢā§āϰāϤ āĻĻā§āϝāĻŧāĨ¤ - āϤā§āϤā§āϝāĻŧ āĻā§āĻ āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻāĻŋ āĻŦā§āϧ āĻāύāĻĄā§āĻā§āϏ (2) āĻāϰ āĻāύā§āϝ ⧍ āύā§āĻĄā§āϰ āĻŽāĻžāύ āĻĢā§āϰāϤ āĻĻā§āϝāĻŧāĨ¤
āĻāĻŦāĻ āĻāĻāĻāĻžāĻŦā§ āĻāĻŽāĻžāĻĻā§āϰ āĻā§āĻ (Get) āĻŽā§āĻĨāĻĄ āĻāĻžāϰā§āϝāĻāϰ⧠āĻšāϝāĻŧā§āĻā§!
đĨ10- āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āϏā§āĻ (Set) āĻŽā§āĻĨāĻĄ
<br>
đĨ10- āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āϏā§āĻ (Set) āĻŽā§āĻĨāĻĄ
āĻāĻāύ āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻāύā§āϝ āϏā§āĻ (Set) āĻŽā§āĻĨāĻĄāĻāĻŋ āϤā§āϰāĻŋ āĻāϰāĻŦāĨ¤ āϏā§āĻ āĻŽā§āĻĨāĻĄāĻāĻŋ āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāύāĻĄā§āĻā§āϏ⧠āĻĨāĻžāĻāĻž āύā§āĻĄā§āϰ āĻŽāĻžāύ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§āĨ¤
āϏā§āĻ āĻŽā§āĻĨāĻĄā§āϰ āĻĒāĻĻāĻā§āώā§āĻĒ
- āĻāύāĻĄā§āĻā§āϏ āĻā§āĻ āĻāϰāĻž: āĻĒā§āϰāĻĨāĻŽā§ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāϤ⧠āĻšāĻŦā§ āϝ⧠āĻāύāĻĄā§āĻā§āϏāĻāĻŋ āĻŦā§āϧ āĻāĻŋāύāĻžāĨ¤
- āύā§āĻĄ āĻā§āĻāĻāĻž: āϝāĻĻāĻŋ āĻāύāĻĄā§āĻā§āϏ āĻŦā§āϧ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠āϤāĻžāϞāĻŋāĻāĻžāϰ āĻļā§āϰ⧠āĻĨā§āĻā§ āĻļā§āϰ⧠āĻāϰ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāύāĻĄā§āĻā§āϏ⧠āĻĒā§āĻāĻāĻžāϤ⧠āĻšāĻŦā§āĨ¤
- āĻŽāĻžāύ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž: āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāύāĻĄā§āĻā§āϏā§āϰ āύā§āĻĄāĻāĻŋāϰ āĻŽāĻžāύ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
-
āĻĢāϞāĻžāĻĢāϞ āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž: āϏāĻĢāϞāĻāĻžāĻŦā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšāϞā§
true
āĻĢā§āϰāϤ āĻĻāĻŋāϤ⧠āĻšāĻŦā§, āĻ āύā§āϝāĻĨāĻžāϝāĻŧfalse
āĨ¤
āĻā§āĻĄāĻŋāĻ āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž
set(index, value) {
// ā§§. āĻāύāĻĄā§āĻā§āϏ āĻā§āĻ āĻāϰāĻž
if (index < 0 || index >= this.length) {
return false; // āĻ
āĻŦā§āϧ āĻāύāĻĄā§āĻā§āϏ āĻšāϞ⧠false āĻĢā§āϰāϤ āĻĻāĻŋāύ
}
let temp = this.get(index); // āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāύāĻĄā§āĻā§āϏā§āϰ āύā§āĻĄ āĻā§āĻāĻāĻž
// ⧍. āύā§āĻĄ āĻĒāĻžāĻāϝāĻŧāĻž āĻā§āϞ⧠āĻŽāĻžāύ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž
if (temp) {
temp.value = value; // āύā§āĻĄā§āϰ āĻŽāĻžāύ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž
return true; // āϏāĻĢāϞāĻāĻžāĻŦā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšāϞ⧠true āĻĢā§āϰāϤ āĻĻāĻŋāύ
}
return false; // āύā§āĻĄ āύāĻž āĻĒāĻžāĻāϝāĻŧāĻž āĻā§āϞ⧠false āĻĢā§āϰāϤ āĻĻāĻŋāύ
}
āĻā§āĻĄ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ
-
āĻāύāĻĄā§āĻā§āϏ āĻā§āĻ:
if (index < 0 || index >= 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)); // āĻāĻāĻŋ āĻāĻāύ ā§Ē āĻĢā§āϰāϤ āĻĻā§āĻŦā§
āĻĢāϞāĻžāĻĢāϞ
- āĻĒā§āϰāĻĨāĻŽ āϏā§āĻ āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻāĻŋ āϏāĻĢāϞāĻāĻžāĻŦ⧠⧍ āύā§āĻĄā§āϰ āĻŽāĻžāύāĻā§ ā§Ē āĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰ⧠āĻāĻŦāĻ
true
āĻĢā§āϰāϤ āĻĻā§āϝāĻŧāĨ¤ - āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āĻā§āĻ āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻāĻŋ āύāϤā§āύ āĻŽāĻžāύ (ā§Ē) āĻĢā§āϰāϤ āĻĻā§āϝāĻŧāĨ¤
āĻāĻŦāĻ āĻāĻāĻāĻžāĻŦā§ āĻāĻŽāĻžāĻĻā§āϰ āϏā§āĻ (Set) āĻŽā§āĻĨāĻĄ āĻāĻžāϰā§āϝāĻāϰ⧠āĻšāϝāĻŧā§āĻā§!
đĨ11 -āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻāύāϏāĻžāϰā§āĻ (Insert) āĻŽā§āĻĨāĻĄ
<br>
đĨ11 āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻāύāϏāĻžāϰā§āĻ (Insert) āĻŽā§āĻĨāĻĄ
Insert Node at any position
āĻāĻāύ āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻāύā§āϝ āĻāύāϏāĻžāϰā§āĻ (Insert) āĻŽā§āĻĨāĻĄāĻāĻŋ āϤā§āϰāĻŋ āĻāϰāĻŦāĨ¤ āĻāύāϏāĻžāϰā§āĻ āĻŽā§āĻĨāĻĄāĻāĻŋ āĻāĻāĻāĻŋ āύāϤā§āύ āύā§āĻĄāĻā§ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāύāĻĄā§āĻā§āϏ⧠āϝā§āĻā§āϤ āĻāϰā§āĨ¤
āĻāύāϏāĻžāϰā§āĻ āĻŽā§āĻĨāĻĄā§āϰ āĻĒāĻĻāĻā§āώā§āĻĒ
- āĻāύāĻĄā§āĻā§āϏ āĻā§āĻ āĻāϰāĻž: āĻĒā§āϰāĻĨāĻŽā§ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāϤ⧠āĻšāĻŦā§ āϝ⧠āĻāύāĻĄā§āĻā§āϏāĻāĻŋ āĻŦā§āϧ āĻāĻŋāύāĻžāĨ¤
- āύāϤā§āύ āύā§āĻĄ āϤā§āϰāĻŋ āĻāϰāĻž: āĻāĻāĻāĻŋ āύāϤā§āύ āύā§āĻĄ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
-
āύā§āĻĄ āϝā§āĻā§āϤ āĻāϰāĻž:
- āϝāĻĻāĻŋ āĻāύāĻĄā§āĻā§āϏ ā§Ļ āĻšāϝāĻŧ, āϤāĻžāĻšāϞā§
unshift
āĻŽā§āĻĨāĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āύāϤā§āύ āύā§āĻĄ āϝā§āĻā§āϤ āĻāϰā§āύāĨ¤ - āϝāĻĻāĻŋ āĻāύāĻĄā§āĻā§āϏ āϤāĻžāϞāĻŋāĻāĻžāϰ āĻĻā§āϰā§āĻā§āϝā§āϰ āϏāĻŽāĻžāύ āĻšāϝāĻŧ, āϤāĻžāĻšāϞā§
push
āĻŽā§āĻĨāĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āύāϤā§āύ āύā§āĻĄ āϝā§āĻā§āϤ āĻāϰā§āύāĨ¤ - āϝāĻĻāĻŋ āĻāύāĻĄā§āĻā§āϏ āĻŦā§āϧ āĻšāϝāĻŧ āĻāĻŦāĻ āϤāĻžāϞāĻŋāĻāĻžāϰ āĻŽāĻžāĻāĻāĻžāύ⧠āϝā§āĻā§āϤ āĻāϰāϤ⧠āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āύā§āĻĄā§āϰ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āĻāĻĒāĻĄā§āĻ āĻāϰā§āύāĨ¤
- āϝāĻĻāĻŋ āĻāύāĻĄā§āĻā§āϏ ā§Ļ āĻšāϝāĻŧ, āϤāĻžāĻšāϞā§
āĻā§āĻĄāĻŋāĻ āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž
insert(index, value) {
// ā§§. āĻāύāĻĄā§āĻā§āϏ āĻā§āĻ āĻāϰāĻž
if (index < 0 || index > 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 āĻĢā§āϰāϤ āĻĻāĻŋāύ
}
āĻā§āĻĄ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ
-
āĻāύāĻĄā§āĻā§āϏ āĻā§āĻ:
if (index < 0 || index > 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); // āĻāĻāύ āϤāĻžāϞāĻŋāĻāĻžāϝāĻŧ ā§Ļ -> ā§§ -> ⧍ āĻĨāĻžāĻāĻŦā§
āĻĢāϞāĻžāĻĢāϞ
- āĻĒā§āϰāĻĨāĻŽ āĻāύāϏāĻžāϰā§āĻ āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻāĻŋ āϏāĻĢāϞāĻāĻžāĻŦā§ ā§§ āύā§āĻĄāĻā§ āĻāύāϏāĻžāϰā§āĻ āĻāϰ⧠āĻāĻŦāĻ
true
āĻĢā§āϰāϤ āĻĻā§āϝāĻŧāĨ¤ - āϤāĻžāϞāĻŋāĻāĻž āĻāĻāύ ā§Ļ -> ā§§ -> ⧍ āϰā§āĻĒā§ āĻĨāĻžāĻāĻŦā§āĨ¤
āĻāĻŦāĻ āĻāĻāĻāĻžāĻŦā§ āĻāĻŽāĻžāĻĻā§āϰ āĻāύāϏāĻžāϰā§āĻ (Insert) āĻŽā§āĻĨāĻĄ āĻāĻžāϰā§āϝāĻāϰ⧠āĻšāϝāĻŧā§āĻā§!
đĨ12-āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āϰāĻŋāĻŽā§āĻ (Remove) āĻŽā§āĻĨāĻĄ
<br>
đĨ12-āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āϰāĻŋāĻŽā§āĻ (Remove) āĻŽā§āĻĨāĻĄ
āĻāĻāύ āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻāύā§āϝ āϰāĻŋāĻŽā§āĻ (Remove) āĻŽā§āĻĨāĻĄāĻāĻŋ āϤā§āϰāĻŋ āĻāϰāĻŦāĨ¤ āϰāĻŋāĻŽā§āĻ āĻŽā§āĻĨāĻĄāĻāĻŋ āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāύāĻĄā§āĻā§āϏ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻāĻāĻā§āĻŽ āϏāϰāĻŋāϝāĻŧā§ āĻĻā§āϝāĻŧāĨ¤
āϰāĻŋāĻŽā§āĻ āĻŽā§āĻĨāĻĄā§āϰ āĻĒāĻĻāĻā§āώā§āĻĒ
- āĻāύāĻĄā§āĻā§āϏ āĻā§āĻ āĻāϰāĻž: āĻĒā§āϰāĻĨāĻŽā§ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāϤ⧠āĻšāĻŦā§ āϝ⧠āĻāύāĻĄā§āĻā§āϏāĻāĻŋ āĻŦā§āϧ āĻāĻŋāύāĻžāĨ¤
-
āĻĒā§āϰāĻĨāĻŽ āĻāĻāĻā§āĻŽ āϏāϰāĻžāύā§: āϝāĻĻāĻŋ āĻāύāĻĄā§āĻā§āϏ ā§Ļ āĻšāϝāĻŧ, āϤāĻžāĻšāϞā§
shift
āĻŽā§āĻĨāĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻā§āĻŽ āϏāϰāĻžāύāĨ¤ -
āĻļā§āώ āĻāĻāĻā§āĻŽ āϏāϰāĻžāύā§: āϝāĻĻāĻŋ āĻāύāĻĄā§āĻā§āϏ āϤāĻžāϞāĻŋāĻāĻžāϰ āĻĻā§āϰā§āĻā§āϝā§āϰ āϏāĻŽāĻžāύ āĻšāϝāĻŧ, āϤāĻžāĻšāϞā§
pop
āĻŽā§āĻĨāĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻā§āĻŽ āϏāϰāĻžāύāĨ¤ - āĻŽāĻžāĻā§ āĻāĻāĻā§āĻŽ āϏāϰāĻžāύā§: āϝāĻĻāĻŋ āĻāύāĻĄā§āĻā§āϏ āĻŦā§āϧ āĻšāϝāĻŧ āĻāĻŦāĻ āϤāĻžāϞāĻŋāĻāĻžāϰ āĻŽāĻžāĻāĻāĻžāύ⧠āĻāĻāĻā§āĻŽ āϏāϰāĻžāϤ⧠āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āύā§āĻĄā§āϰ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āĻāĻĒāĻĄā§āĻ āĻāϰā§āύāĨ¤
āĻā§āĻĄāĻŋāĻ āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž
remove(index) {
// ā§§. āĻāύāĻĄā§āĻā§āϏ āĻā§āĻ āĻāϰāĻž
if (index < 0 || index >= 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; // āĻ
āĻĒāϏāĻžāϰāĻŋāϤ āύā§āĻĄ āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž
}
āĻā§āĻĄ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ
-
āĻāύāĻĄā§āĻā§āϏ āĻā§āĻ:
if (index < 0 || index >= 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); // āĻāĻāύ āϤāĻžāϞāĻŋāĻāĻžāϝāĻŧ ā§§ā§§ -> ā§ āĻĨāĻžāĻāĻŦā§, āĻĻā§āϰā§āĻā§āϝ āĻšāĻŦā§ 2
āĻĢāϞāĻžāĻĢāϞ
- āĻĒā§āϰāĻĨāĻŽ āϰāĻŋāĻŽā§āĻ āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻāĻŋ āϏāĻĢāϞāĻāĻžāĻŦā§ ā§¨ā§Š āύā§āĻĄāĻā§ āϏāϰāĻŋāϝāĻŧā§ āĻĻā§āϝāĻŧ āĻāĻŦāĻ āĻĢā§āϰāϤ āĻĻā§āϝāĻŧāĨ¤
- āϤāĻžāϞāĻŋāĻāĻž āĻāĻāύ ā§§ā§§ -> ā§ āϰā§āĻĒā§ āĻĨāĻžāĻāĻŦā§ āĻāĻŦāĻ āĻĻā§āϰā§āĻā§āϝ āĻšāĻŦ⧠⧍āĨ¤
āĻāĻŦāĻ āĻāĻāĻāĻžāĻŦā§ āĻāĻŽāĻžāĻĻā§āϰ āϰāĻŋāĻŽā§āĻ (Remove) āĻŽā§āĻĨāĻĄ āĻāĻžāϰā§āϝāĻāϰ⧠āĻšāϝāĻŧā§āĻā§!
đĨ13-Reverse Linked List
<br>
đĨ13-āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āϰāĻŋāĻāĻžāϰā§āϏ (Reverse) āĻŽā§āĻĨāĻĄ
āĻāĻāύ āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āĻāύā§āϝ āϰāĻŋāĻāĻžāϰā§āϏ (Reverse) āĻŽā§āĻĨāĻĄāĻāĻŋ āϤā§āϰāĻŋ āĻāϰāĻŦāĨ¤ āϰāĻŋāĻāĻžāϰā§āϏ āĻŽā§āĻĨāĻĄāĻāĻŋ āĻāĻāĻāĻŋ āϞāĻŋāĻā§āĻāĻĄ āϞāĻŋāϏā§āĻā§āϰ āύā§āĻĄāĻā§āϞāĻŋāĻā§ āĻāϞā§āĻā§ āĻĻā§āϝāĻŧāĨ¤
āϰāĻŋāĻāĻžāϰā§āϏ āĻŽā§āĻĨāĻĄā§āϰ āĻĒāĻĻāĻā§āώā§āĻĒ
- āĻšā§āĻĄ āĻāĻŦāĻ āĻā§āĻāϞ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ: āĻĒā§āϰāĻĨāĻŽā§ āĻšā§āĻĄ āĻāĻŦāĻ āĻā§āĻāϞāĻā§ āĻāĻā§ āĻ āĻĒāϰā§āϰ āĻĻāĻŋāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
- āύā§āĻĄāĻā§āϞāĻŋāϰ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ: āĻĒā§āϰāϤāĻŋāĻāĻŋ āύā§āĻĄā§āϰ āĻĒāϰāĻŦāϰā§āϤ⧠āĻĒāϝāĻŧā§āύā§āĻāĻžāϰāĻā§ āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āύā§āĻĄā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
- āĻĢāϞāĻžāĻĢāϞ āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž: āĻĒā§āϰ⧠āĻāϞā§āĻāĻžāύ⧠āϤāĻžāϞāĻŋāĻāĻž āĻĢā§āϰāϤ āĻĻāĻŋāϤ⧠āĻšāĻŦā§āĨ¤
āĻā§āĻĄāĻŋāĻ āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž
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; // āĻĒā§āϰ⧠āĻāϞā§āĻāĻžāύ⧠āϤāĻžāϞāĻŋāĻāĻž āĻĢā§āϰāϤ āĻĻā§āĻāϝāĻŧāĻž
}
āĻā§āĻĄ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ
-
āĻšā§āĻĄ āĻāĻŦāĻ āĻā§āĻāϞ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ: āĻĒā§āϰāĻĨāĻŽā§
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()); // āĻāĻāĻŋ āĻāϞā§āĻāĻžāύ⧠āϤāĻžāϞāĻŋāĻāĻž āĻĢā§āϰāϤ āĻĻā§āĻŦā§
āĻĢāϞāĻžāĻĢāϞ
- āϰāĻŋāĻāĻžāϰā§āϏ āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āϤāĻžāϞāĻŋāĻāĻž āĻāĻāύ ā§Š -> ⧍ -> ā§§ āϰā§āĻĒā§ āĻĨāĻžāĻāĻŦā§, āϝā§āĻāĻžāύ⧠āĻšā§āĻĄ āĻāĻāύ ā§Š āĻāĻŦāĻ āĻā§āĻāϞ ā§§āĨ¤
āĻāĻŦāĻ āĻāĻāĻāĻžāĻŦā§ āĻāĻŽāĻžāĻĻā§āϰ āϰāĻŋāĻāĻžāϰā§āϏ (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();
Top comments (0)