Here is the all chapter that we will learn in this docs
- āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻĻāĻŋāĻā§ Node āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž
- āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻļā§āĻˇā§āĻ° āĻĻāĻŋāĻā§ Node āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž
- āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻĻāĻŋāĻ āĻĨā§āĻā§ Node delete āĻāĻ°āĻž
- āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻļā§āĻˇā§āĻ° āĻĻāĻŋāĻ āĻĨā§āĻā§ Node delete āĻāĻ°āĻž
> āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻŽāĻ¤ āĻāĻ°ā§āĻāĻāĻŋ āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻāĻžāĻ° āĻšāĻā§āĻā§ Linked ListāĨ¤ āĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°ā§āĻ¯āĻžāĻāĻāĻžāĻ° āĻ āĻ¨ā§āĻ¯āĻžā§ā§ āĻĄāĻžāĻāĻž āĻ¸ā§āĻā§āĻ° āĻāĻ°ā§, āĻāĻŦāĻ āĻ°āĻžāĻ¨ āĻāĻžāĻāĻŽā§ āĻ¨āĻ¤ā§āĻ¨ āĻ¸ā§āĻĒā§āĻ¸ā§āĻ° āĻĻāĻ°āĻāĻžāĻ° āĻšāĻ˛ā§ āĻ āĻā§āĻŽā§āĻāĻŋāĻā§āĻ˛āĻŋ āĻ¤āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻ¨āĻŋāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻāĻŋ āĻšāĻā§āĻā§ āĻĄāĻžāĻāĻ¨āĻžāĻŽāĻŋāĻ āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ°āĻžāĻāĻāĻžāĻ°āĨ¤
āĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻŽāĻ¤āĻ, āĻ¤āĻŦā§ āĻ ā§āĻ¯āĻžāĻ°ā§āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¤āĻā§āĻā§ āĻŽā§āĻŽāĻ°āĻŋ āĻĻāĻ°āĻāĻžāĻ°, āĻĒā§āĻ°āĻĨāĻŽā§āĻ āĻŦāĻ˛ā§ āĻĻāĻŋāĻ¤ā§ āĻšā§āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ˛āĻŋāĻā§āĻāĻĄ āĻ˛āĻŋāĻ¸ā§āĻā§ āĻĒā§āĻ°ā§ā§āĻāĻ¨ āĻ āĻ¨ā§āĻ¯āĻžā§ā§ āĻŽā§āĻŽāĻ°āĻŋ āĻŦāĻžā§āĻžāĻ¨ā§ āĻŦāĻž āĻāĻŽāĻŋā§ā§ āĻ¨ā§āĻā§āĻž āĻ¯āĻžā§āĨ¤ āĻāĻ°ā§ āĻĻā§āĻāĻāĻž āĻ¸ā§āĻŦāĻŋāĻ§ā§ āĻšāĻā§āĻā§, āĻ˛āĻŋāĻā§āĻāĻĄ āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻŽāĻžāĻāĻāĻžāĻ¨ āĻĨā§āĻā§ āĻāĻ° āĻ¯ā§ āĻā§āĻ¨ āĻāĻāĻā§āĻŽ āĻ°āĻŋāĻŽā§āĻ āĻāĻ°āĻž āĻ¯āĻžā§ āĻŦāĻž āĻŽāĻžāĻāĻāĻžāĻ¨ā§ āĻ¨āĻ¤ā§āĻ¨ āĻāĻāĻā§āĻŽ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻ¯āĻžā§āĨ¤ āĻāĻ° āĻāĻ¨āĻŋāĻļāĻžāĻ˛āĻŋ āĻā§āĻ¨ āĻ¸āĻžāĻāĻ āĻĄāĻŋāĻā§āĻ˛ā§ā§āĻžāĻ° āĻāĻ°ā§ āĻĻāĻŋāĻ¤ā§ āĻšā§ āĻ¨āĻžāĨ¤
āĻ āĻ¸ā§āĻŦāĻŋāĻ§ā§āĻ āĻ°ā§ā§āĻā§āĨ¤ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻ°ā§āĻ¨ā§āĻĄāĻŽ āĻāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻž āĻ¯āĻžā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ˛āĻŋāĻā§āĻāĻĄ āĻ˛āĻŋāĻ¸ā§āĻā§ āĻ°ā§āĻĄāĻŽ āĻāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻž āĻ¯āĻžā§ āĻ¨āĻžāĨ¤
āĻ˛āĻŋāĻā§āĻāĻĄ āĻ˛āĻŋāĻ¸ā§āĻ āĻšāĻā§āĻā§ āĻĄāĻžāĻāĻ¨ā§āĻ¯āĻžāĻŽāĻŋāĻā§āĻ¯āĻžāĻ˛āĻ āĻāĻ˛ā§āĻā§āĻā§āĻĄ āĻ¨ā§āĻĄāĨ¤ āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§āĻāĻāĻž āĻ¨ā§āĻĄā§āĻ° āĻāĻāĻāĻž āĻā§āĻ¯āĻžāĻ˛ā§ āĻāĻŦāĻ āĻāĻāĻāĻž āĻĒā§ā§āĻ¨ā§āĻāĻžāĻ° āĻĨāĻžāĻā§āĨ¤ āĻĒā§ā§āĻ¨ā§āĻāĻžāĻ° āĻāĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤āĻŋ āĻ¨ā§āĻĄ āĻŦāĻž āĻ˛āĻŋāĻā§āĻāĻĄ āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤āĻŋ āĻŽā§āĻŽā§āĻŦāĻžāĻ°āĻā§ āĻĒā§ā§āĻ¨ā§āĻ āĻāĻ°ā§āĨ¤ āĻāĻāĻž āĻā§āĻ°ā§āĻ¨ā§āĻ° āĻŽāĻ¤āĨ¤ āĻĒā§āĻ°āĻĨāĻŽ āĻŽā§āĻŽā§āĻŦāĻžāĻ° āĻšāĻā§āĻā§ āĻā§āĻ°ā§āĻ¨ā§āĻ° āĻāĻā§āĻāĻŋāĻ¨āĨ¤ āĻāĻŦāĻ āĻāĻ°āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻŦāĻāĻŋāĻāĻŋ āĻāĻā§āĻāĻŋāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ¨ā§āĻāĻā§āĻĄ āĻĨāĻžāĻā§, āĻ¯āĻž āĻĒā§ā§āĻ¨ā§āĻāĻžāĻ°āĨ¤ āĻĒāĻ°ā§āĻ° āĻŦāĻāĻŋāĻāĻŋ āĻāĻ° āĻĒāĻ°ā§āĻ° āĻŦāĻāĻŋāĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ¨ā§āĻāĻā§āĻĄ āĻĨāĻžāĻā§āĨ¤ āĻ¯āĻĻāĻŋ āĻļā§āĻˇā§ āĻā§āĻ¨ āĻŦāĻāĻŋ āĻ¨āĻž āĻĨāĻžāĻā§, āĻ¤āĻāĻ¨ āĻāĻŽāĻ°āĻž āĻŦāĻ˛āĻŋ āĻā§āĻ°ā§āĻ¨ā§āĻ° āĻļā§āĻˇāĨ¤ āĻāĻāĻ āĻāĻžāĻŦā§ āĻ˛āĻŋāĻā§āĻāĻĄ āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻĒā§ā§āĻ¨ā§āĻāĻžāĻ° āĻ¯āĻĻāĻŋ āĻļā§āĻ¨ā§āĻ¯ āĻšā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻŦāĻ˛āĻŋ āĻāĻ° āĻĒāĻ° āĻāĻ° āĻā§āĻ¨ āĻŽā§āĻŽā§āĻŦāĻžāĻ° āĻ¨ā§āĻāĨ¤ āĻ˛āĻŋāĻā§āĻāĻĄ āĻ˛āĻŋāĻ¸ā§āĻā§ āĻĒā§āĻ°āĻĨāĻŽ āĻ¨ā§āĻĄ āĻ āĻ¨ā§āĻ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻ¨, āĻāĻžāĻ°āĻŖ āĻāĻāĻžāĻ¤ā§ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻŽā§āĻŽā§āĻŦāĻžāĻ°ā§āĻ° āĻĒā§ā§āĻ¨ā§āĻāĻžāĻ° āĻĨāĻžāĻā§āĨ¤ āĻ¯āĻĻāĻŋ āĻĒā§āĻ°āĻĨāĻŽ āĻŽā§āĻŽā§āĻŦāĻžāĻ° āĻā§āĻ¨ āĻā§āĻ°āĻŽā§ āĻ°āĻŋāĻŽā§āĻ āĻšā§ā§ āĻ¯āĻžā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻĒā§āĻ°ā§ āĻ˛āĻŋāĻā§āĻāĻĄ āĻ˛āĻŋāĻ¸ā§āĻāĻŋāĻ āĻāĻ° āĻā§āĻāĻā§ āĻĒāĻžāĻā§āĻž āĻ¯āĻžāĻŦā§ āĻ¨āĻžāĨ¤ āĻā§āĻ°ā§āĻ¨ā§āĻ° āĻāĻā§āĻāĻŋāĻ¨ āĻāĻžā§āĻž āĻ āĻ¨ā§āĻ¯ āĻŦāĻāĻŋ āĻā§āĻ˛ā§ āĻ¯ā§āĻŽāĻ¨ āĻā§āĻ¨ āĻāĻžāĻā§ āĻāĻ¸ā§ āĻ¨āĻžāĨ¤
āĻ¨āĻŋāĻā§āĻ° āĻāĻŦāĻŋāĻāĻŋ āĻ˛āĻā§āĻˇ āĻāĻ°ā§āĻ¨,
āĻāĻāĻŋ āĻšāĻā§āĻā§ āĻ˛āĻŋāĻā§āĻāĻĄ āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻāĻāĻāĻŋ āĻ¨ā§āĻĄāĨ¤ āĻ¨ā§āĻĄā§āĻ° āĻĻā§āĻāĻāĻž āĻ āĻāĻļ, āĻāĻāĻāĻž āĻšāĻā§āĻā§ āĻĄā§āĻāĻžāĨ¤ āĻāĻ°ā§āĻāĻāĻž āĻšāĻā§āĻā§ āĻāĻĄā§āĻ°ā§āĻ¸āĨ¤ āĻāĻŽāĻ¨ āĻ āĻ¨ā§āĻ āĻā§āĻ˛ā§ āĻ¨ā§āĻĄ āĻ¨āĻŋā§ā§āĻ āĻ˛āĻŋāĻā§āĻāĻĄ āĻ˛āĻŋāĻ¸ā§āĻ āĻ¤ā§āĻ°āĻŋāĨ¤ āĻĒā§āĻ°āĻĨāĻŽ āĻ¨ā§āĻĄā§āĻ° Address āĻĻā§āĻŦāĻŋāĻ¤ā§ā§ āĻ¨ā§āĻĄā§āĻ° āĻāĻĄā§āĻ°ā§āĻ¸ āĻĒā§ā§āĻ¨ā§āĻ āĻāĻ°āĻž āĻĨāĻžāĻā§āĨ¤ āĻ¨āĻŋāĻā§āĻ° āĻāĻŦāĻŋāĻāĻŋāĻ° āĻŽāĻ¤āĻ
āĻāĻāĻžāĻŦā§ āĻ¯āĻ¤ āĻāĻā§āĻā§ āĻ¤āĻ¤ āĻā§āĻ˛ā§ āĻ¨ā§āĻĄ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻ¯āĻžā§āĨ¤
āĻā§āĻ°ā§āĻ¨ā§āĻ° āĻāĻ āĻāĻāĻāĻž āĻāĻ˛āĻžāĻĻāĻž āĻŦā§āĻ˛āĻāĻā§ āĻāĻŽāĻ°āĻž āĻŦāĻ˛āĻŋ āĻŦāĻāĻŋ, āĻ˛āĻŋāĻā§āĻāĻĄ āĻ˛āĻŋāĻ¸ā§āĻā§ āĻāĻŽāĻ°āĻž āĻŦāĻ˛āĻŦ āĻ¨ā§āĻĄāĨ¤
- Singly Linked List
- Doubly Linked List
> Singly Linked List āĻ āĻāĻŽāĻ°āĻž head āĻāĻŦāĻ tail āĻ¨āĻžāĻŽāĻ ā§¨āĻāĻŋ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻĒāĻžāĻ, āĻ¯ā§āĻāĻž āĻĻāĻŋā§ā§ āĻāĻŽāĻ°āĻž āĻŦā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ¨ āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻ head āĻāĻŦāĻ āĻā§āĻ¨ āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻ tail āĻāĻ° head āĻāĻ° āĻŽāĻžāĻ¨ā§ āĻšāĻā§āĻā§ āĻ¸āĻŦāĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¸āĻāĻā§āĻ¯āĻž āĻāĻŦāĻ tail āĻāĻ° āĻŽāĻžāĻ¨ā§ āĻšāĻā§āĻā§ āĻ¸āĻŦāĻžāĻ° āĻļā§āĻˇā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻžāĨ¤ āĻāĻ°āĻĒāĻ° Singly Linked List āĻ āĻāĻŽāĻ°āĻž next āĻ¨āĻžāĻŽā§ āĻ āĻāĻāĻāĻŋ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻĒāĻžāĻ āĻ¯ā§āĻāĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻŽāĻ°āĻž āĻāĻžāĻ¨āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° current āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻā§āĻ° āĻĒāĻ°ā§ āĻā§āĻ¨ āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻ āĻ°ā§ā§āĻā§āĨ¤ āĻāĻā§āĻāĻž āĻŦā§āĻāĻ¤ā§ āĻ¨āĻž āĻĒāĻžāĻ°āĻ˛ā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¨ā§, āĻ¨āĻŋāĻā§āĻ° āĻāĻŦāĻŋāĻāĻŋ āĻĻā§āĻā§āĻ¨ āĻāĻŦāĻ āĻāĻ āĻāĻŦāĻŋ āĻĨā§āĻā§ āĻāĻŽāĻ°āĻž āĻāĻ°ā§ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°āĻŦā§ āĻ¨āĻŋāĻā§āĨ¤
āĻāĻĒāĻ°ā§āĻ° āĻāĻŦāĻŋāĻāĻŋ āĻ˛āĻā§āĻˇ āĻāĻ°āĻ˛ā§ āĻĻā§āĻāĻŦā§āĻ¨ āĻ¯ā§ āĻāĻāĻĻāĻŽ āĻĒā§āĻ°āĻĨāĻŽā§ head āĻ°ā§ā§āĻā§ āĻāĻŦāĻ āĻāĻāĻĻāĻŽ āĻļā§āĻˇā§ tail āĻ°ā§ā§āĻā§ āĻāĻŦāĻ āĻŽāĻžāĻāĻāĻžāĻ¨ā§ length āĻ°ā§ā§āĻā§āĨ¤ āĻāĻŦāĻ āĻ¨āĻŋāĻā§āĻ° āĻ¯ā§ arrow āĻāĻŋāĻšā§āĻ¨ āĻĻāĻŋā§ā§ next next āĻĻā§āĻāĻžāĻ¨ā§ āĻšā§ā§āĻā§ āĻāĻāĻž āĻšāĻā§āĻā§ āĻāĻĄā§āĻ°ā§āĻ¸ āĻāĻŦāĻ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻā§āĻ° āĻĒāĻ°ā§ next āĻā§āĻ¨ āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻ āĻ°ā§ā§āĻā§āĨ¤ āĻāĻ° āĻāĻāĻžāĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° Singly Linked List āĻāĻ˛āĻ¤ā§ āĻĨāĻžāĻāĻŦā§ āĻāĻŦāĻ āĻ¸āĻŦāĻžāĻ° āĻļā§āĻˇā§ āĻŽāĻžāĻ¨ā§ tail āĻ āĻ¯ā§ āĻĨāĻžāĻāĻŦā§ āĻ¤āĻžāĻ° āĻā§āĻ¨ā§ next value āĻĨāĻžāĻāĻŦā§ āĻ¨āĻž āĻŽāĻžāĻ¨ā§ āĻāĻ āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻā§āĻ° next value null āĻĨāĻžāĻāĻŦā§āĨ¤
āĻāĻĒāĻ°ā§āĻ° āĻāĻŦāĻŋāĻāĻŋāĻ¤ā§ āĻĻā§āĻāĻž āĻ¯āĻžāĻā§āĻā§ āĻ¯ā§ āĻāĻāĻāĻŋ head āĻāĻŦāĻ āĻāĻāĻāĻŋ tail āĻ°ā§ā§āĻā§ ( āĻāĻā§ āĻ¯ā§āĻāĻžāĻŦā§ āĻŦāĻ˛ā§āĻāĻŋāĻ˛āĻžāĻŽ ) āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻŽāĻžāĻĻā§āĻ° node āĻā§āĻ˛ā§ āĻ°ā§ā§āĻā§ āĻāĻŦāĻ āĻŦāĻ˛ā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ¯ā§ āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§āĻāĻāĻŋ node āĻāĻ° āĻ¸āĻžāĻĨā§ next āĻ¨āĻžāĻŽā§ āĻāĻāĻāĻž āĻĒā§āĻ°āĻĒāĻžāĻ°ā§āĻāĻŋ āĻĨāĻžāĻā§ āĻ¯āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻŽāĻ°āĻž āĻāĻžāĻ¨āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ node āĻāĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ node āĻā§āĻ¨āĻāĻŋ āĻ āĻĨāĻŦāĻž āĻ¤āĻžāĻ° value āĻāĻ¤? āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻāĻŦāĻžāĻ° āĻāĻŽāĻ°āĻž āĻāĻžāĻā§āĻāĻŋ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ singly linked list āĻĨā§āĻā§ āĻ¸āĻŦāĻžāĻ° āĻļā§āĻˇā§ āĻ¯ā§ āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻāĻāĻŋ āĻĨāĻžāĻāĻŦā§ āĻĨāĻžāĻā§ āĻĄāĻŋāĻ˛āĻŋāĻ āĻāĻ°āĻŦā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻĒāĻ¨āĻžāĻ°āĻž āĻŦāĻ˛āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻ¤ā§ āĻ¸ā§āĻāĻŋ āĻĒā§ā§ā§ āĻ¯āĻžāĻā§āĻāĻŋ āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž tail āĻā§ āĻ§āĻ°āĻŋ āĻ¤āĻžāĻšāĻ˛ā§āĻāĨ¤ āĻ¨āĻž, Linked List āĻ āĻāĻāĻāĻžāĻŦā§ āĻāĻ°āĻž āĻ¯āĻžā§ āĻ¨āĻžāĨ¤ āĻāĻžāĻ°āĻŖ Linked List āĻ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻ āĻĨā§āĻā§ āĻĒāĻ°ā§āĻ° āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻā§ āĻ¯ā§āĻ¤ā§ āĻšāĻ˛ā§ āĻĒā§ā§āĻ¨ā§āĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¯ā§āĻ¤ā§ āĻšā§ āĻ¯ā§āĻāĻž āĻāĻŽāĻ°āĻž Linked List āĻāĻ° āĻ¸āĻŦ Node āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒā§ā§ā§ āĻĨāĻžāĻāĻŋ ( next āĻ¯ā§āĻāĻž āĻāĻāĻāĻžāĻ )āĨ¤ āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻ¯āĻĻāĻŋ POP āĻŽā§āĻĨāĻĄā§āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ āĻā§āĻ¨ā§ node āĻĄāĻŋāĻ˛āĻŋāĻ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¤āĻžāĻšāĻ˛ā§, āĻāĻĒāĻ°ā§āĻ° Diagram āĻ āĻĻā§ā§āĻž āĻāĻā§ āĻ¸ā§āĻāĻžāĻŦā§ āĻĢāĻ˛ā§ āĻāĻ°āĻŦā§āĨ¤ āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¯ā§ node āĻāĻā§ āĻ¸ā§āĻāĻžāĻā§ currentNode āĻ¨āĻžāĻŽā§ āĻāĻāĻāĻŋ variable āĻ āĻ°āĻžāĻāĻŦā§ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻā§āĻ āĻāĻ°āĻŦā§ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ currentNode āĻāĻ° āĻāĻŋāĻ¤āĻ°ā§ next āĻ¨āĻžāĻŽā§ āĻ¯ā§ āĻĒā§āĻ°āĻĒāĻžāĻ°ā§āĻāĻŋ āĻ°ā§ā§āĻā§ āĻ¸ā§āĻāĻž āĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°ā§ Linked List āĻāĻ° āĻ¯ā§ Tail āĻ°ā§ā§āĻā§ āĻ¸ā§āĻāĻžāĻ° āĻ¸āĻŽāĻžāĻ¨? āĻ¯āĻĻāĻŋ āĻ¸āĻŽāĻžāĻ¨ āĻšā§ āĻ¤āĻžāĻšāĻ˛ā§ āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻ˛āĻžāĻ¸ā§āĻ node āĻāĻŋ āĻĒā§ā§ā§ āĻā§āĻ˛āĻžāĻŽ āĻāĻ° āĻ¯āĻĻāĻŋ āĻ¸āĻŽāĻžāĻ¨ āĻ¨āĻž āĻšā§ āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻāĻ currentNode āĻāĻ° nextNode āĻ¯ā§āĻāĻž āĻāĻā§ āĻāĻāĻāĻžāĻā§ currentNode āĻŦāĻžāĻ¨āĻŋā§ā§ āĻĻāĻŋāĻŦā§ āĻāĻŦāĻ āĻāĻŦāĻžāĻ° āĻ¸ā§āĻāĻŽ āĻĒā§āĻ°āĻ¸ā§āĻ¸ā§ āĻā§āĻ āĻāĻ°āĻŦā§ āĻ¯ā§ āĻāĻ currentNode āĻāĻ° nextNode āĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° tail āĻāĻ° āĻ¸āĻŽāĻžāĻ¨? āĻāĻāĻžāĻŦā§ āĻā§āĻ āĻāĻ°ā§ āĻāĻ°ā§ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°ā§ node āĻĻā§āĻāĻŦā§ āĻāĻŦāĻ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻŋā§ā§ āĻāĻŽāĻ°āĻž tail āĻāĻ° āĻ¸āĻŽāĻžāĻ¨ āĻĒāĻžāĻŦā§ ( āĻ āĻ°ā§āĻĨāĻžā§, if(next === tail) āĻ¸āĻ¤ā§āĻ¯āĻŋ āĻšāĻ˛ā§ ) āĻāĻŽāĻ°āĻž āĻāĻ node āĻāĻžāĻā§ delete āĻāĻ°ā§ āĻĻāĻŋāĻŦā§ āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° tail āĻā§ āĻ¨āĻŋā§ā§ āĻāĻ¸āĻŦā§ āĻāĻŽāĻ°āĻž āĻ¯ā§ currentNode āĻĒā§ā§ā§āĻāĻŋ āĻāĻāĻāĻžā§, āĻŽāĻžāĻ¨ā§ āĻāĻāĻ¨ tail āĻšāĻā§āĻā§ āĻāĻ currentNodeāĨ¤ āĻāĻŦāĻ āĻ¸āĻ°ā§āĻŦāĻļā§āĻˇ āĻ¯āĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° list āĻ āĻā§āĻ¨ā§ node āĻĨāĻžāĻāĻŦā§ āĻ¨āĻž āĻ¤āĻāĻ¨ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° head āĻāĻŦāĻ tail āĻāĻ°ā§ āĻĻāĻŋāĻŦā§ null āĻā§ ( āĻŽāĻžāĻ¨ā§ āĻļā§āĻ°ā§āĻ¤ā§ āĻ¯ā§āĻāĻžāĻŦā§ āĻāĻŋāĻ˛ā§ āĻ¸ā§āĻāĻžāĻŦā§ )āĨ¤
āĻ¯āĻĻāĻŋ code āĻĻā§āĻā§ āĻŦā§āĻāĻ¤ā§ āĻāĻžāĻ¨ āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻ āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋāĻ¤ā§ Singly List List āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒāĻžāĻŦā§āĻ¨ āĻ¸āĻŦ āĻā§āĻĄāĨ¤
> āĻāĻŦāĻžāĻ° āĻāĻŽāĻ°āĻž āĻāĻžāĻā§āĻāĻŋ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĨāĻžāĻāĻž āĻ¸āĻŦ node āĻĨā§āĻā§ āĻ¸āĻŦāĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽā§ āĻ¯ā§āĻāĻž āĻĨāĻžāĻāĻŦā§ āĻ¸ā§āĻāĻžāĻā§ delete āĻāĻ°ā§ āĻĻāĻŋāĻŦā§ āĻ¯āĻāĻ¨ Shift() āĻŽā§āĻĨāĻĄāĻāĻŋ call āĻāĻ°āĻŦā§ āĻ¤āĻāĻ¨āĨ¤ āĻāĻŦāĻ āĻāĻ āĻāĻžāĻāĻāĻŋ āĻ āĻ¨ā§āĻ āĻ¸āĻšāĻāĨ¤ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻĨāĻŽā§ āĻā§āĻ āĻāĻ°ā§ āĻ¨āĻŋāĻŦā§ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻāĻāĻŋ āĻāĻŋ āĻāĻā§āĻŦāĻžāĻ°ā§ āĻāĻžāĻ˛āĻŋ āĻ¨āĻžāĻāĻŋ āĻ¯āĻĻāĻŋ āĻāĻžāĻ˛āĻŋ āĻĨāĻžāĻā§ āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž null āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°āĻŦā§ āĻ¨āĻžāĻšāĻ˛ā§ āĻāĻŽāĻžāĻĻā§āĻ° delete āĻāĻ° āĻāĻ°āĻŦā§āĨ¤ āĻ¤ā§ delete āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻāĻāĻŋ variable āĻ¨āĻŋāĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¯ā§ head āĻ°ā§ā§āĻā§ āĻ¸ā§āĻāĻžāĻā§ currentNode āĻ¨āĻžāĻŽāĻ āĻāĻāĻāĻŋ variable āĻ āĻ°āĻžāĻāĻŦā§āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻ¯ā§ tail āĻ°ā§ā§āĻā§ āĻ¤āĻžāĻ° āĻ¸āĻŽāĻžāĻ¨ currentNode āĻāĻ° next āĻŦāĻ¸āĻŋā§ā§ āĻĻāĻŋāĻŦā§ ( this.tail = currentNode.next āĻāĻāĻžāĻŦā§ )āĨ¤ āĻ¤āĻžāĻšāĻ˛ā§āĻ āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° delete āĻāĻ°āĻž āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĨ¤ āĻāĻ°āĻĒāĻ° āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° length āĻāĻŽāĻŋā§ā§ āĻĻāĻŋāĻŦā§, āĻāĻžāĻ°āĻŖ āĻāĻāĻāĻŋ node delete āĻšā§ā§ āĻā§āĻ˛ā§ āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ length āĻāĻŽāĻžāĻ¤ā§ āĻšāĻŦā§ āĻ¤āĻžāĻāĨ¤ āĻāĻ°āĻĒāĻ° āĻāĻŽāĻ°āĻž āĻāĻ°ā§āĻāĻāĻž āĻā§āĻ āĻāĻ°āĻŦā§ āĻ¯ā§ āĻ¯āĻĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° length === 0 āĻšā§ āĻ¤āĻžāĻšāĻ˛ā§ tail āĻ¯ā§āĻ¨ null āĻšā§ā§ āĻ¯āĻžā§āĨ¤ āĻāĻžāĻ°āĻŖ head null āĻšā§ā§ āĻ¯āĻžāĻŦā§ shift() call āĻāĻ°āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĻā§āĻāĻž āĻ¯āĻžāĻŦā§ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° tail āĻ value āĻ°ā§ā§ āĻā§āĻā§ āĻ¤āĻžāĻ° āĻāĻžāĻ°āĻŖā§ āĻāĻŽāĻ°āĻž āĻāĻāĻž āĻāĻ°āĻŦā§ āĻ¯ā§ āĻ¯āĻāĻ¨ length 0 āĻšā§ā§ āĻ¯āĻžāĻŦā§ āĻ¤āĻāĻ¨ tail āĻāĻ° value null āĻšā§ā§ āĻ¯āĻžāĻŦā§ āĻāĻŦāĻ tail āĻāĻ° next āĻ null āĻšā§ā§ āĻ¯āĻžāĻŦā§āĨ¤ āĻāĻāĻāĻĨāĻžā§ āĻ¸āĻŦ āĻāĻŋāĻā§ null āĻĨāĻžāĻāĻŦā§ āĻ¯āĻĻāĻŋ length 0 āĻšā§ā§ āĻ¯āĻžā§āĨ¤
reference āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻā§ āĻā§āĻĄ āĻĻāĻŋā§ā§ āĻĻāĻŋāĻ˛āĻžāĻŽ āĻāĻŋāĻāĻžāĻŦā§ shift method implement āĻāĻ°āĻž āĻ¯āĻžā§āĨ¤
// shift method
shift() {
// āĻā§āĻ āĻāĻ°āĻž āĻšāĻā§āĻā§ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻ āĻāĻžāĻ˛āĻŋ āĻāĻŋ āĻ¨āĻžāĨ¤
if (!this.isEmpty()) {
// currentNode āĻ¨āĻžāĻŽāĻ āĻāĻāĻāĻŋ variable āĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° head āĻā§ āĻ°āĻžāĻāĻž āĻšāĻā§āĻā§āĨ¤
let currentNode = this.head;
// āĻāĻŦāĻžāĻ° delete āĻāĻ°āĻž āĻšāĻā§āĻā§ āĻāĻžāĻ¸ā§āĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° head āĻā§ currentNode āĻāĻ° next āĻŦāĻžāĻ¨āĻŋā§ā§ āĻĻā§āĻā§āĻž āĻšāĻā§āĻā§āĨ¤
this.head = currentNode.next;
// āĻāĻŦāĻžāĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° length āĻāĻŽāĻžāĻ¨ā§ āĻšāĻā§āĻā§āĨ¤
this.length--;
// āĻā§āĻ āĻāĻ°āĻž āĻšāĻā§āĻā§ āĻ¯ā§ āĻ¯āĻĻāĻŋ āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° length 0 āĻšā§ āĻ¤āĻžāĻšāĻ˛ā§ tail āĻ¯ā§āĻ¨ā§ null āĻšā§ā§ āĻ¯āĻžā§āĨ¤
if (this.length === 0) {
this.tail = null;
}
// āĻ¸āĻŦāĻžāĻ° āĻļā§āĻˇā§ currentNode return āĻāĻ°āĻž āĻšāĻā§āĻā§āĨ¤
return currentNode;
}
}
> āĻĒā§āĻ°āĻĨāĻŽā§ āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§ node āĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ˛āĻžāĻ¸ā§āĻā§āĻ° āĻĻāĻŋāĻ āĻĻāĻŋā§ā§ āĻ¯ā§āĻāĻžāĻŦā§ āĻā§āĻ¨ā§ array āĻ¤ā§ push() method āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ°āĻ¤āĻžāĻŽāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻāĻžāĻā§āĻāĻŋ āĻ¯ā§ āĻ¯āĻāĻ¨ āĻā§āĻ¨ā§ node āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻŦā§ āĻ¤āĻāĻ¨ āĻ¸ā§āĻ node āĻ¯ā§āĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻĻāĻŋāĻā§ āĻ¯ā§āĻā§āĻ¤ āĻšā§ āĻŽāĻžāĻ¨ā§ array āĻāĻ° unshift() method āĻ¯ā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§ āĻāĻāĻāĻžāĻŦā§āĻāĨ¤ āĻāĻāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻļāĻŋ āĻā§āĻ¨ā§ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻžāĨ¤ āĻāĻŽāĻ°āĻž āĻ¯āĻāĻ¨ āĻā§āĻ¨ā§ node āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻŦā§ āĻ¤āĻāĻ¨ āĻāĻ node āĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° head āĻŦāĻžāĻ¨āĻŋā§ā§ āĻĻāĻŋāĻŦā§ āĻāĻŦāĻ āĻ¨āĻ¤ā§āĻ¨ āĻ¯ā§ node āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ āĻ¸ā§āĻ node āĻāĻ° next āĻŦāĻžāĻ¨āĻŋā§ā§ āĻĻāĻŋāĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻā§āĻ° head āĻ¯ā§āĻāĻž āĻāĻŋāĻ˛ā§ āĻāĻāĻāĻžāĻā§ āĻ¤āĻžāĻšāĻ˛ā§āĻ āĻāĻŽāĻžāĻĻā§āĻ° node āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšā§ā§ āĻ¯āĻžāĻŦā§āĨ¤
āĻŦāĻŋāĻˇā§āĻāĻŋ āĻšā§āĻ¤ā§ āĻā§āĻ˛āĻŋā§āĻžāĻ° āĻšāĻ¨ āĻ¨āĻŋāĨ¤ āĻ¤āĻžāĻ āĻ¨āĻŋāĻā§ āĻā§āĻĄ āĻĻā§āĻā§āĻž āĻšāĻ˛ā§ āĻāĻŦāĻ āĻāĻŽā§āĻ¨ā§āĻā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻŦā§āĻāĻžāĻ¨ā§ āĻšāĻ˛ā§ āĻā§āĻ¨ āĻ˛āĻžāĻāĻ¨ āĻāĻŋ āĻāĻžāĻā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻšāĻā§āĻā§āĨ¤
// unshift method
unshift(value) {
// āĻāĻāĻžāĻ¨ā§ āĻ¨āĻ¤ā§āĻ¨ node āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻā§āĻā§āĨ¤ āĻ¯āĻāĻ¨ unshift method call āĻāĻ°āĻž āĻšāĻŦā§ āĻ¤āĻāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ value āĻĻāĻŋāĻŦā§āĻ¨ āĻāĻ° āĻāĻ value āĻĻāĻŋā§ā§āĻ āĻāĻ āĻ¨āĻ¤ā§āĻ¨ node āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻā§āĻā§āĨ¤
let newNode = {
head: value,
next: null,
};
// āĻā§āĻ āĻāĻ°āĻž āĻšāĻā§āĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻ āĻāĻŋ emptyāĨ¤ āĻ¯āĻĻāĻŋ empty āĻšā§ āĻ¤āĻžāĻšāĻ˛ā§ if āĻāĻ° āĻāĻžāĻ āĻāĻ°āĻŦā§ āĻ¨āĻž āĻšāĻ˛ā§ else āĻāĻ° āĻāĻžāĻ āĻāĻ°āĻŦā§āĨ¤
if (this.isEmpty()) {
// āĻāĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° head āĻ¯ā§āĻāĻž āĻ°ā§ā§āĻā§ āĻ¸ā§āĻāĻžāĻ° value āĻšāĻŋāĻ¸ā§āĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ node āĻā§ āĻĻā§ā§āĻž āĻšāĻ˛ā§
this.head = newNode;
// āĻāĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° tail āĻ¯ā§āĻāĻž āĻ°ā§ā§āĻā§ āĻ¸ā§āĻāĻžāĻ° value āĻšāĻŋāĻ¸ā§āĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ node āĻā§ āĻĻā§ā§āĻž āĻšāĻ˛ā§
this.tail = newNode;
} else {
// āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ node āĻ¯āĻāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ¤āĻāĻ¨ āĻ¨āĻ¤ā§āĻ¨ node āĻāĻ° next āĻā§ null āĻ°ā§āĻā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ¤āĻžāĻ āĻāĻāĻ¨ āĻāĻ āĻ¨āĻ¤ā§āĻ¨ node āĻāĻ° next āĻāĻ° value āĻšāĻŋāĻ¸ā§āĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻā§āĻ° head āĻā§ āĻĻāĻŋā§ā§ āĻĻāĻŋāĻā§āĻāĻŋāĨ¤
newNode.next = this.head;
// āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° head āĻāĻ° āĻāĻžā§āĻāĻžā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ node āĻā§ āĻŦāĻ¸āĻŋā§ā§ āĻĻāĻŋāĻā§āĻāĻŋāĨ¤
this.head = newNode;
// āĻāĻŦāĻžāĻ° āĻāĻāĻāĻŋ node āĻ¯ā§āĻā§āĻ¤ āĻšāĻ˛ā§ āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° length āĻ āĻŦā§āĻĻā§āĻ§āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¸ā§āĻāĻžāĻ āĻāĻāĻžāĻ¨ā§ āĻāĻ°āĻž āĻšāĻā§āĻā§āĨ¤
this.length++;
}
}
> āĻāĻĒāĻ°ā§āĻ° āĻāĻŦāĻŋāĻāĻŋ āĻ˛āĻā§āĻˇ āĻāĻ°ā§āĻ¨, Doubly linked list āĻāĻ° āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¸ā§āĻāĻŽ singly linked list āĻāĻ° āĻŽāĻ¤ā§, āĻļā§āĻ§ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻāĻŋ āĻšāĻā§āĻā§ singly linked list āĻ āĻāĻŽāĻ°āĻž previous āĻ¨āĻžāĻŽā§ āĻā§āĻ¨ā§ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻĒā§āĻ¤āĻžāĻŽ āĻ¨āĻž āĻāĻŋāĻ¨ā§āĻ¤ā§ Doubly linked list āĻ āĻāĻŽāĻ°āĻž previous āĻ¨āĻžāĻŽā§ āĻāĻāĻāĻž property āĻĒāĻžāĻā§āĻāĻŋ āĻ¯ā§āĻāĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻŽāĻžāĻĻā§āĻ° currentNode āĻāĻ° āĻāĻā§āĻ° node āĻā§āĻ¨āĻāĻŋ āĻ¸ā§āĻāĻž āĻāĻžāĻ¨āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĨ¤ āĻ¤āĻžāĻāĻžā§āĻž āĻŦāĻžāĻāĻŋ āĻ¸āĻŦ singly linked list āĻāĻ° āĻŽāĻ¤ā§āĨ¤ > Singly Linked List āĻ āĻāĻŽāĻ°āĻž āĻ¯ā§āĻāĻžāĻŦā§ push method āĻāĻŽāĻĒā§āĻ˛ā§āĻŽā§āĻ¨ā§āĻ āĻāĻ°ā§ āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻļā§āĻˇā§āĻ° āĻĻāĻŋāĻā§ node āĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ āĻŋāĻ āĻ¸ā§āĻāĻāĻžāĻŦā§āĻ Doubly Linked List āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§, āĻļā§āĻ§ā§ āĻāĻāĻāĻŋ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻŦāĻžā§āĻŦā§ āĻāĻ°āĻž āĻ¸ā§āĻāĻž āĻšāĻā§āĻā§ previous point. āĻāĻĒāĻ°ā§ āĻŦāĻ˛āĻž āĻšā§ā§āĻā§ āĻ¯ā§ Doubly Linked List āĻ āĻŽā§āĻ āĻ¤āĻŋāĻ¨āĻāĻŋ āĻĒā§āĻ°āĻĒāĻžāĻ°ā§āĻāĻŋ āĻĒāĻžāĻŦā§ (value, next, prev)āĨ¤ āĻ¸ā§āĻāĻŽ āĻāĻžāĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° head āĻāĻŦāĻ tail āĻĨāĻžāĻāĻŦā§ āĻ˛āĻŋāĻ¸ā§āĻā§ āĻāĻŦāĻ length āĻĨāĻžāĻāĻŦā§āĨ¤ āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻŽāĻ°āĻž āĻā§āĻ āĻāĻ°ā§ āĻ¨āĻŋāĻŦā§ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§ āĻā§āĻ¨ā§ node āĻāĻā§ āĻāĻŋ āĻ¨āĻž, āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻĨāĻžāĻā§ āĻ¤āĻžāĻšāĻ˛ā§ āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻ¯ā§ node āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻŦā§ āĻ¸ā§āĻāĻž āĻšāĻŦā§ head āĻāĻŦāĻ āĻ¸ā§āĻāĻžāĻ āĻšāĻŦā§ tail āĻāĻ° āĻĒā§āĻ°āĻĨāĻŽ node āĻāĻ° next value āĻĨāĻžāĻāĻŦā§ null āĻāĻŦāĻ prev value āĻĨāĻžāĻāĻŦā§ nullāĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¯āĻĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§ āĻāĻā§ āĻĨā§āĻā§ āĻāĻāĻāĻŋ node āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻĨāĻžāĻā§ āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻ¯āĻāĻ¨ āĻāĻ°ā§āĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ node āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻŦā§ āĻ¤āĻāĻ¨ āĻ¤ā§ āĻāĻ node āĻāĻ° next āĻāĻŦāĻ prev value āĻ āĻŦāĻļā§āĻ¯āĻ āĻĨāĻžāĻāĻŦā§āĨ¤ āĻāĻ° āĻ¸ā§āĻāĻž āĻāĻŽāĻ°āĻž āĻāĻāĻžāĻŦā§ āĻāĻ°āĻŦā§ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ¯ā§ tail āĻ°ā§ā§āĻā§ āĻ¸ā§āĻāĻžāĻ° next āĻāĻ° value āĻ¸āĻŽāĻžāĻ¨ āĻāĻ°ā§ āĻĻāĻŋāĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ¯ā§ node āĻ¯ā§āĻā§āĻ¤ āĻšāĻ¤ā§ āĻāĻžāĻā§āĻā§ āĻ¸ā§āĻāĻžāĻā§ āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ node āĻāĻ° prev value āĻ¸ā§āĻ āĻāĻ°ā§ āĻĻāĻŋāĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¯ā§ tail āĻ°ā§ā§āĻā§ āĻ¸ā§āĻāĻžāĻā§ āĻāĻŦāĻ āĻ āĻŦāĻļā§āĻˇā§ āĻāĻŽāĻžāĻĻā§āĻ° tail āĻāĻ° value āĻ¸ā§āĻ āĻāĻ°ā§ āĻĻāĻŋāĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ¯ā§ node āĻ¯ā§āĻā§āĻ¤ āĻšāĻ¤ā§ āĻāĻžāĻā§āĻā§ āĻ¸ā§āĻāĻžāĻā§, āĻŦā§āĻ¯āĻžāĻ¸ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻ āĻšā§ā§ āĻā§āĻā§ āĻ¸āĻŦāĻžāĻ° āĻļā§āĻˇā§ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° length āĻŦāĻžā§āĻŋā§ā§ āĻĻāĻŋāĻŦā§āĨ¤
āĻ¨āĻŋāĻā§āĻ° āĻā§āĻĄā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻ°ā§ āĻāĻžāĻ˛ā§āĻāĻžāĻŦā§ Doubly Linked List āĻ Push method āĻāĻŽāĻĒā§āĻ˛āĻŋāĻŽā§āĻ¨ā§āĻ āĻāĻ°āĻž āĻšāĻ˛ā§āĨ¤
// push method implement
// āĻāĻāĻāĻž āĻā§āĻŽā§āĻĒāĻ˛ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻ¨āĻŋāĻ˛āĻžāĻŽ āĻ¯āĻžāĻ¤ā§ āĻāĻ˛āĻžāĻĻāĻž āĻāĻ°ā§ āĻāĻŦāĻžāĻ° āĻ¸āĻŦ āĻĒā§āĻ°āĻĒāĻžāĻ°ā§āĻāĻŋ āĻā§āĻ˛ā§ āĻ˛āĻŋāĻāĻ¤ā§ āĻ¨āĻž āĻšā§āĨ¤
class NodeTemplete {
constructor(value) {
this.value = value;
this.next = null;
this.prev = null;
}
}
// āĻāĻāĻž āĻšāĻā§āĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻŽā§āĻāĻ¨ Doubly Linked List āĻā§āĻ˛āĻžāĻ¸āĨ¤
class DoublyLinkedList {
constructor() {
this.head = null;
this.tail = null;
this.length = 0;
}
// āĻā§āĻ āĻāĻ°ā§ āĻ¨āĻŋāĻā§āĻāĻŋ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻ āĻāĻŋ empty āĻ¨āĻžāĻāĻŋāĨ¤ āĻāĻāĻž āĻāĻŽāĻžāĻĻā§āĻ° true or false āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°āĻŦā§āĨ¤
isEmpty() {
return this.length === 0;
}
// āĻāĻāĻāĻž āĻšāĻā§āĻā§ āĻāĻŽāĻžāĻĻā§āĻ° push method
push(value) {
// āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻ¯ā§ value āĻĒāĻžāĻā§āĻāĻŋ āĻ¤āĻž āĻĻāĻŋā§ā§ āĻ¨āĻ¤ā§āĻ¨ āĻāĻāĻāĻŋ node āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻ¨āĻŋāĻā§āĻāĻŋāĨ¤ āĻāĻŽāĻ°āĻž āĻāĻā§ āĻ¯ā§ āĻā§āĻŽā§āĻĒāĻ˛ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ¸ā§āĻāĻž āĻāĻāĻžāĻ¨ā§ call āĻāĻ°āĻ˛āĻžāĻŽ āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° value āĻāĻŋ āĻĻāĻŋā§ā§ āĻĻāĻŋāĻ˛āĻžāĻŽāĨ¤
let newNode = new NodeTemplete(value);
// āĻāĻŦāĻžāĻ° āĻā§āĻ āĻāĻ°āĻž āĻšāĻā§āĻā§, āĻ¯āĻĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° head āĻ¨āĻž āĻĨāĻžāĻā§ āĻ¤āĻžāĻšāĻ˛ā§ if āĻāĻ° āĻāĻžāĻ āĻāĻ°āĻŦā§ ( head null āĻĨāĻžāĻāĻ˛ā§ āĻāĻ°āĻāĻŋ ) āĻāĻ° āĻ¯āĻĻāĻŋ head āĻ āĻā§āĻ¨ā§ node āĻĨā§āĻā§ āĻĨāĻžāĻā§ āĻ¤āĻžāĻšāĻ˛ā§ else āĻāĻ° āĻāĻžāĻ āĻāĻ°āĻŦā§āĨ¤
if (!this.head) {
// āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° head āĻāĻ°ā§ āĻĻāĻŋāĻ˛āĻžāĻŽ āĻ¨āĻ¤ā§āĻ¨ āĻ¯ā§ node āĻ¸ā§āĻāĻžāĨ¤
this.head = newNode;
// āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° tail āĻāĻ°ā§ āĻĻāĻŋāĻ˛āĻžāĻŽ āĻ¨āĻ¤ā§āĻ¨ āĻ¯ā§ node āĻ¸ā§āĻāĻžāĨ¤
this.tail = newNode;
} else {
// āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¯ā§ tail āĻ°ā§ā§āĻā§ āĻ¸ā§āĻāĻžāĻ° next āĻĒā§āĻ°āĻĒāĻžāĻ°ā§āĻāĻŋāĻ° value āĻāĻ°ā§ āĻĻāĻŋāĻ˛āĻžāĻŽ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ node āĻā§āĨ¤
this.tail.next = newNode;
// āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¯ā§ āĻ¨āĻ¤ā§āĻ¨ node āĻ°ā§ā§āĻā§ āĻ¸ā§āĻāĻžāĻ° previous value āĻ¸ā§āĻ āĻāĻ°ā§ āĻĻāĻŋāĻ˛āĻžāĻŽ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻā§āĻ° āĻ¯ā§ tail āĻāĻŋāĻ˛ā§ āĻ¸ā§āĻāĻžāĻā§āĨ¤
newNode.prev = this.tail;
// āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻ¨āĻ¤ā§āĻ¨ āĻāĻāĻāĻŋ node āĻļā§āĻˇā§āĻ° āĻĻāĻŋāĻā§ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻ˛āĻžāĻŽ, āĻ¤āĻžāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° tail āĻāĻ°ā§ āĻĻāĻŋāĻ˛āĻžāĻŽ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ node āĻā§āĨ¤
this.tail = newNode;
}
// āĻāĻāĻ¨ āĻāĻāĻāĻŋ node āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻ˛ā§ āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° length āĻ āĻŦāĻžā§āĻžāĻ¤ā§ āĻšāĻŦā§ āĻ¸ā§āĻāĻž āĻāĻāĻžāĻ¨ā§ āĻāĻ°āĻ˛āĻžāĻŽāĨ¤
this.length++;
}
}
let test = new DoublyLinkedList();
test.push(5);
test.push(10);
console.log(test);
> Doubly Linked List āĻ āĻ˛āĻžāĻ¸ā§āĻā§āĻ° āĻĻāĻŋāĻ āĻĨā§āĻā§ āĻā§āĻ¨ā§ node āĻĄāĻŋāĻ˛āĻŋāĻ āĻāĻ°āĻž āĻ¸ā§āĻāĻŽ Singly Linked List āĻāĻ° āĻŽāĻ¤ā§āĻ āĻļā§āĻ§ā§ āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯ āĻšāĻā§āĻā§ Doubly Linked List āĻ prev āĻ¯ā§ āĻāĻ°ā§āĻāĻāĻŋ value āĻĨāĻžāĻā§ āĻ¸ā§āĻāĻžāĨ¤ āĻāĻā§, āĻāĻŽāĻ°āĻž Singly Linked List āĻ āĻ˛āĻžāĻ¸ā§āĻā§āĻ° āĻĻāĻŋāĻā§āĻ° node āĻĄāĻŋāĻ˛āĻŋāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ āĻāĻ°āĻ¤āĻžāĻŽ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° currentNode ( currentNode āĻ¨āĻžāĻŽā§ āĻāĻāĻāĻŋ variable āĻ¨āĻŋāĻ¤āĻžāĻŽ āĻāĻŦāĻ āĻāĻ° value āĻ¸ā§āĻ āĻāĻ°ā§ āĻĻāĻŋāĻ¤āĻžāĻŽ head āĻā§ ) āĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° tail āĻāĻ° āĻ¸āĻŽāĻžāĻ¨, āĻ¯āĻĻāĻŋ āĻ¸āĻŽāĻžāĻ¨ āĻšā§ āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž currentNode āĻāĻŋāĻā§ āĻāĻŽāĻžāĻĻā§āĻ° tail āĻŦāĻžāĻ¨āĻŋā§ā§ āĻĻāĻŋāĻ¤āĻžāĻŽ āĻāĻŦāĻ currentNode āĻāĻ° next āĻāĻ°ā§ āĻĻāĻŋāĻ¤āĻžāĻŽ nullāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ Doubly Linked List āĻ āĻāĻ° āĻāĻŋāĻā§āĻāĻž āĻŦā§āĻ¯āĻ¤āĻŋāĻā§āĻ°āĻŽāĨ¤ āĻāĻŽāĻ°āĻž Doubly Linked List āĻāĻāĻžāĻŦā§ āĻāĻ°āĻŦā§... āĻĒā§āĻ°āĻĨāĻŽā§ āĻā§āĻ āĻāĻ°ā§ āĻ¨āĻŋāĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¯āĻĻāĻŋ āĻā§āĻ¨ā§ node āĻ¨āĻž āĻĨāĻžāĻā§ āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻāĻžāĻ¸ā§āĻ null āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°ā§ āĻĻāĻŋāĻŦā§āĨ¤ āĻāĻ° āĻ¯āĻĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ node āĻĨā§āĻā§ āĻĨāĻžāĻā§ āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° head āĻāĻŦāĻ tail āĻā§ null āĻāĻ°ā§ āĻĻāĻŋāĻŦā§ ( āĻŽāĻžāĻ¨ā§ āĻāĻ node āĻāĻŋ āĻĄāĻŋāĻ˛āĻŋāĻ āĻšā§ā§ āĻā§āĻā§ )āĨ¤ āĻāĻŦāĻžāĻ° āĻāĻ¸āĻŋ āĻŽā§āĻ˛ āĻĄāĻŋāĻ˛āĻŋāĻā§āĻļāĻ¨ā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° tail āĻ¯ā§āĻāĻž āĻāĻā§ āĻ¸ā§āĻāĻž āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ variable āĻ āĻ°āĻžāĻāĻŦā§āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° tail āĻāĻ°ā§ āĻĻāĻŋāĻŦā§ āĻ¯ā§ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§ tail āĻāĻā§ āĻ¤āĻžāĻ° prev āĻā§ ( āĻŽāĻžāĻ¨ā§ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ tail āĻāĻ° previous value āĻ¯ā§āĻāĻž āĻāĻā§ āĻāĻāĻāĻžāĻā§ )āĨ¤ āĻāĻŦāĻžāĻ° āĻāĻŽāĻ°āĻž āĻ¤ā§ āĻ¸āĻŦ āĻ˛āĻžāĻ¸ā§āĻā§āĻ° node āĻāĻŋ āĻĄāĻŋāĻ˛āĻŋāĻ āĻāĻ°āĻ¤ā§ āĻāĻžāĻā§āĻāĻŋ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻāĻžāĻ¨āĻŋ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¯ā§ tail āĻ°ā§ā§āĻā§ āĻ¤āĻžāĻ° next value āĻšāĻā§āĻā§ null āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻāĻ¨ āĻ¨āĻ¤ā§āĻ¨ tail āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻ¨āĻŋā§ā§āĻāĻŋ āĻ¤āĻžāĻ āĻāĻ tail āĻāĻ° next value āĻāĻ°ā§ āĻĻāĻŋāĻŦā§ nullāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻ¨ā§ āĻāĻāĻāĻŋ āĻāĻžāĻ āĻŦāĻžāĻāĻŋ āĻāĻā§... āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻā§āĻ° āĻ¯ā§ tail āĻāĻŋāĻ˛ā§ ( āĻŽāĻžāĻ¨ā§ āĻĄāĻŋāĻ˛āĻŋāĻ āĻāĻ°āĻžāĻ° āĻāĻā§ ) āĻ¸ā§āĻāĻžāĻ° āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻāĻŋ prev node āĻāĻŋāĻ˛ā§ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻ¤ā§ āĻāĻāĻ¨ āĻāĻ tail āĻĄāĻŋāĻ˛āĻŋāĻ āĻāĻ°ā§ āĻĻāĻŋā§ā§āĻāĻŋ āĻ¤āĻžāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ tail āĻāĻ° prev āĻā§ āĻ null āĻāĻ°ā§ āĻĻāĻŋāĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻŦā§āĻ¯āĻžāĻ¸ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻ āĻšā§ā§ āĻā§āĻā§āĨ¤ āĻāĻŦāĻžāĻ° āĻāĻžāĻ¸ā§āĻ āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° length āĻāĻŽāĻŋā§ā§ āĻĻāĻŋāĻ˛ā§āĻ āĻšā§ā§ āĻ¯āĻžā§āĨ¤
āĻāĻā§, āĻĒā§āĻ°āĻž āĻ¨ā§ā§āĻžāĻ° āĻĒā§āĻ°ā§ā§āĻāĻ¨ āĻ¨āĻžāĻ āĻ¨āĻŋāĻā§ āĻā§āĻĄ āĻĻāĻŋāĻā§āĻāĻŋ āĻāĻŦāĻ āĻ¸āĻžāĻĨā§ āĻ¤ā§ āĻāĻŽā§āĻ¨ā§āĻ āĻĨāĻžāĻāĻā§āĻāĨ¤
// pop method implement
pop() {
// āĻā§āĻ āĻāĻ°ā§ āĻ¨āĻŋāĻā§āĻāĻŋ āĻ˛āĻŋāĻ¸ā§āĻ āĻāĻŋ āĻĒā§āĻ°ā§ āĻāĻžāĻ˛āĻŋāĨ¤
if (!this.head) {
return null;
}
// āĻ¨āĻ¤ā§āĻ¨ āĻāĻāĻāĻŋ variable āĻ āĻāĻŽāĻžāĻĻā§āĻ° tail āĻā§ āĻ°āĻžāĻāĻ˛āĻžāĻŽāĨ¤
let popNode = this.tail;
// āĻāĻŦāĻžāĻ° āĻā§āĻ āĻāĻ°ā§ āĻ¨āĻŋāĻā§āĻāĻŋ āĻ¯āĻĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§ āĻāĻāĻāĻŋ node āĻĨāĻžāĻā§ āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž if āĻāĻ° āĻāĻžāĻ āĻāĻ°āĻŦā§ āĻ¨āĻžāĻšāĻ˛ā§ else āĻāĻ° āĻāĻžāĻāĨ¤
if (this.head === 1) {
// head āĻā§ null āĻāĻ°ā§ āĻĻāĻŋāĻā§āĻāĻŋāĨ¤
this.head = null;
// tail āĻā§ null āĻāĻ°ā§ āĻĻāĻŋāĻā§āĻāĻŋāĨ¤
this.tail = null;
} else {
// āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻ¯ā§ tail āĻšāĻŦā§ āĻ¸ā§ āĻšāĻā§āĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻāĻā§ āĻ¯ā§ tail āĻāĻŋāĻ˛ā§ āĻ¤āĻžāĻ° previous āĻ āĻĨāĻžāĻāĻž nodeāĨ¤
this.tail = popNode.prev;
// āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻāĻā§āĻ° tail āĻāĻ° next āĻāĻ° value āĻāĻ°ā§ āĻĻāĻŋāĻā§āĻāĻŋ nullāĨ¤
popNode.next = null;
// āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻāĻā§āĻ° tail āĻ āĻĨāĻžāĻāĻž prev āĻā§ āĻ null āĻāĻ°ā§ āĻĻāĻŋāĻā§āĻāĻŋāĨ¤
popNode.prev = null;
}
// āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° length āĻāĻŽāĻžāĻā§āĻāĻŋāĨ¤
this.length--;
// āĻ¸āĻŦāĻžāĻ° āĻļā§āĻˇā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ¯ā§ tail āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ˛āĻžāĻŽ āĻ¸ā§āĻāĻž āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°ā§ āĻĻāĻŋāĻā§āĻāĻŋāĨ¤
return popNode;
}
> āĻ¸āĻāĻā§āĻˇā§āĻĒā§ āĻŦā§āĻāĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋ āĻāĻŽāĻ°āĻž, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° Doubly linked list āĻ previous node āĻ°ā§ā§āĻā§ āĻ¤āĻžāĻ āĻāĻāĻŋ Singly linke list āĻĨā§āĻā§ āĻāĻŋāĻ¨ā§āĻ¨ āĻāĻŦāĻ āĻāĻāĻŋāĻ¤ā§ Push, Pop, Unshift, Shift āĻāĻā§āĻ˛ā§ āĻāĻŽāĻĒā§āĻ˛āĻŋāĻŽā§āĻ¨ā§āĻ āĻāĻ°āĻžāĻ āĻāĻāĻā§ āĻāĻŋāĻ¨ā§āĻ¨ Singly linked list āĻĨā§āĻā§āĨ¤ āĻāĻā§ āĻāĻžāĻā§āĻ° āĻāĻĨāĻžā§ āĻāĻ¸āĻŋ, āĻāĻŽāĻ°āĻž āĻāĻāĻ¨ Unshift āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻĻāĻŋāĻā§ node āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻāĻžāĻā§āĻāĻŋ āĻ¤āĻžāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻŋ āĻāĻŽāĻĒā§āĻ˛āĻŋāĻŽā§āĻ¨ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻāĻž āĻāĻ°āĻŦā§ āĻ¯ā§... āĻĒā§āĻ°āĻĨāĻŽā§ āĻ¤ā§ āĻā§āĻ āĻāĻ°ā§ āĻ¨āĻŋāĻŦā§ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§ āĻā§āĻ¨ā§ node āĻāĻā§ āĻāĻŋ āĻ¨āĻž āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ node āĻā§ āĻāĻāĻāĻŋ variable āĻ āĻ¸ā§āĻā§āĻ° āĻāĻ°ā§ āĻ°āĻžāĻāĻŦā§āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻ¯ā§ head āĻ°ā§ā§āĻā§ āĻ¤āĻžāĻ° āĻ¯ā§ prev node āĻ°ā§ā§āĻā§ āĻ¤āĻžāĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ node āĻāĻ°ā§ āĻĻāĻŋāĻŦā§ ( āĻļā§āĻ°ā§āĻ¤ā§ prev āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŋāĻ˛ā§ null )āĨ¤ āĻāĻ°āĻĒāĻ° āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ node āĻāĻ° next node āĻāĻ°ā§ āĻĻāĻŋāĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¯ā§ head āĻ°ā§ā§āĻā§ āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻ¯āĻāĻ¨ āĻ¨āĻ¤ā§āĻ¨ node āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻĒā§āĻ°āĻĨāĻŽā§ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻāĻžāĻā§āĻāĻŋ āĻ¸ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻ¯ā§ node āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻŦā§ āĻ¸ā§āĻāĻŋāĻ āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° head āĻšāĻŦā§ āĻ¤āĻžāĻ āĻ¨āĻž ? āĻāĻāĻ¨ā§āĻ¯āĻ āĻāĻŦāĻžāĻ° āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° head āĻāĻ°ā§ āĻĻāĻŋāĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¯ā§ āĻ¨āĻ¤ā§āĻ¨ node āĻ¤āĻžāĻā§ āĻŦā§āĻ¯āĻžāĻ¸ āĻāĻŽāĻžāĻĻā§āĻ° node āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšā§ā§ āĻā§āĻā§āĨ¤
āĻŦā§āĻā§āĻ¨āĻ¨āĻŋ! āĻā§āĻ¨ā§ āĻŦā§āĻ¯āĻžāĻĒāĻžāĻ° āĻ¨āĻž āĻ¨āĻŋāĻā§ āĻā§āĻĄ āĻĻā§āĻā§āĻž āĻšāĻ˛ā§ āĻāĻŦāĻ āĻ¸āĻžāĻĨā§ āĻ¤ā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻŽā§āĻ¨ā§āĻ āĻāĻ°āĻž āĻāĻā§āĨ¤
// unshift method implement
// āĻāĻāĻž āĻāĻāĻāĻŋ āĻā§āĻŽā§āĻĒāĻ˛ā§āĻ āĻ¨āĻ¤ā§āĻ¨ node āĻāĻ° āĻāĻ¨ā§āĻ¯āĨ¤
class NodeTemplete {
constructor(value) {
this.value = value;
this.next = null;
this.prev = null;
}
}
unshift(value) {
// āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ node āĻāĻāĻāĻŋ variable āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ°āĻžāĻāĻāĻŋ āĻāĻŦāĻ āĻāĻĒāĻ°ā§ āĻ¯ā§ āĻā§āĻŽā§āĻĒāĻ˛ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ¸ā§āĻāĻž call āĻāĻ°ā§ āĻĻāĻŋā§ā§āĻāĻŋāĨ¤
let newNode = new NodeTemplete(value);
// āĻā§āĻ āĻāĻ°āĻāĻŋ āĻ¯āĻĻāĻŋ āĻā§āĻ¨ā§ node āĻ¨āĻž āĻĨāĻžāĻā§ āĻ¤āĻžāĻšāĻ˛ā§ if āĻāĻžāĻ āĻāĻ°āĻŦā§ āĻĨāĻžāĻāĻ˛ā§ else āĻāĻžāĻ āĻāĻ°āĻŦā§āĨ¤
if (!this.head) {
// āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° head āĻšā§ā§ āĻ¯āĻžāĻŦā§ āĻ¨āĻ¤ā§āĻ¨ node
this.head = newNode;
// āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° tail āĻšā§ā§ āĻ¯āĻžāĻŦā§ āĻ¨āĻ¤ā§āĻ¨ node
this.tail = newNode;
} else {
// āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻ¯ā§ head āĻ°ā§ā§āĻā§ āĻ¤āĻžāĻ° prev āĻ¤ā§ null āĻĨāĻžāĻāĻŦā§ āĻ¤āĻžāĻ āĻ¨āĻž, āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻ¸ā§āĻāĻžāĻā§ āĻāĻ°ā§ āĻĻāĻŋāĻā§āĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ nodeāĨ¤ āĻāĻžāĻ°āĻŖ āĻāĻŽāĻ°āĻž āĻ¤ā§ āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻĒā§āĻ°āĻĨāĻŽā§ node āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻāĻžāĻā§āĻāĻŋāĨ¤
this.head.prev = newNode;
// āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ¯ā§ node āĻāĻā§ āĻ¸ā§āĻāĻžāĻ° next āĻ¤ā§ āĻāĻ¨āĻŋāĻļāĻŋā§āĻžāĻ˛āĻŋ null āĻĨāĻžāĻā§ āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻ¸ā§āĻāĻžāĻā§ āĻāĻ°ā§ āĻĻāĻŋāĻā§āĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻ¯ā§ head āĻāĻā§ āĻ¸ā§āĻāĻžāĨ¤
newNode.next = this.head;
// āĻ¸āĻŦāĻžāĻ° āĻļā§āĻˇā§ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° head āĻāĻž āĻ¤ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻ¸ā§āĻāĻžāĻ āĻāĻ°āĻāĻŋ head āĻŦāĻžāĻ¨āĻŋā§ā§ āĻĻāĻŋāĻā§āĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ node āĻā§āĨ¤
this.head = newNode;
}
// āĻāĻŦāĻ āĻĢāĻžāĻāĻ¨āĻžāĻ˛āĻŋ āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° length āĻŦāĻžā§āĻŋā§ā§ āĻĻāĻŋāĻā§āĻāĻŋāĨ¤
this.length++;
}
> āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻĨā§āĻā§ node āĻĄāĻŋāĻ˛āĻŋāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻĨāĻŽā§ āĻ§āĻ°āĻ¤ā§ āĻšāĻŦā§ head āĻā§ āĻāĻŦāĻ āĻ¸ā§āĻāĻžāĻā§ āĻāĻāĻāĻŋ variable āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸ā§āĻā§āĻ° āĻāĻ°ā§ āĻ°āĻžāĻāĻŦā§ oldHead āĻ¨āĻžāĻŽā§ ( āĻāĻžāĻ°āĻŖ āĻāĻŽāĻ°āĻž āĻ¯āĻĻāĻŋ āĻĒā§āĻ°āĻĨāĻŽ āĻĨā§āĻā§ āĻāĻāĻāĻŋ node āĻĄāĻŋāĻ˛āĻŋāĻ āĻāĻ°āĻŋ āĻ¤āĻžāĻšāĻ˛ā§ āĻ¤ā§ āĻ¸ā§āĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° head āĻ āĻĨāĻžāĻāĻŦā§ āĻāĻ° head āĻā§ āĻĄāĻŋāĻ˛āĻŋāĻ āĻāĻ°ā§ āĻĻāĻŋāĻ˛ā§ āĻ¤ā§ āĻ¨āĻ¤ā§āĻ¨ āĻāĻ°ā§āĻāĻāĻŋ node āĻā§ head āĻŦāĻžāĻ¨āĻŋā§ā§ āĻĻāĻŋāĻ¤ā§ āĻšāĻŦā§ )āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ° āĻā§āĻ āĻāĻ°ā§ āĻ¨āĻŋāĻŦā§ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§ āĻā§āĻ¨ā§ node āĻāĻā§ āĻ¨āĻžāĻāĻŋ āĻ¨āĻž āĻĨāĻžāĻāĻ˛ā§ null āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°ā§ āĻĻāĻŋāĻŦā§ āĻāĻŦāĻ āĻ¯āĻĻāĻŋ āĻļā§āĻ§ā§ āĻāĻāĻāĻŋ node āĻĨāĻžāĻā§ āĻ˛āĻŋāĻ¸ā§āĻā§ āĻ¤āĻžāĻšāĻ˛ā§ āĻ¸ā§āĻāĻžāĻā§ āĻĄāĻŋāĻ˛āĻŋāĻ āĻāĻ°ā§ head, tail āĻā§ null āĻāĻ°ā§ āĻĻāĻŋāĻŦā§āĨ¤ āĻāĻŦāĻžāĻ°, āĻāĻŽāĻ°āĻž āĻ¤ā§ āĻĒā§āĻ°āĻĨāĻŽ āĻĨā§āĻā§ node āĻĄāĻŋāĻ˛āĻŋāĻ āĻāĻ°āĻ¤ā§ āĻāĻžāĻā§āĻāĻŋ āĻ¤āĻžāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¯ā§ oldNode āĻ°ā§ā§āĻā§ āĻ¸ā§āĻāĻžāĻ° next āĻā§ āĻāĻ°ā§ āĻĻāĻŋāĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ head āĻāĻŦāĻ āĻāĻāĻžāĻā§ āĻ¯āĻĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ head āĻāĻ°āĻŋ āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻāĻžāĻ° āĻ¤ā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻāĻāĻŋ prev node āĻ°ā§ā§āĻā§ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻ¤ā§ āĻāĻžāĻ¨āĻŋ āĻ¯ā§ head āĻāĻ° prev node null āĻĨāĻžāĻā§ āĻāĻŦāĻ tail āĻāĻ° next node null āĻĨāĻžāĻā§ āĻ¤āĻžāĻšāĻ˛ā§ āĻ¤ā§ āĻāĻŦāĻžāĻ° āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ node āĻāĻ° prev node null āĻāĻ°ā§ āĻĻāĻŋāĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻŦāĻžāĻ° āĻāĻŽāĻžāĻĻā§āĻ° oldNode āĻ¯ā§āĻāĻž āĻāĻŋāĻ˛ā§ ( āĻŽāĻžāĻ¨ā§ āĻāĻāĻĻāĻŽ āĻļā§āĻ°ā§āĻ° āĻ¯ā§ head ) āĻ¤āĻžāĻ° āĻ¤ā§ āĻāĻāĻāĻŋ next node āĻāĻŋāĻ˛ā§ āĻ¯ā§āĻāĻžāĻā§ āĻāĻŽāĻ°āĻž āĻāĻāĻ¨ āĻ¨āĻ¤ā§āĻ¨ head āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ āĻ¤āĻžāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻŦāĻžāĻ° āĻāĻ oldNode āĻāĻ° next node null āĻāĻ°ā§ āĻĻāĻŋāĻ¤ā§ āĻšāĻŦā§ āĻ¤āĻžāĻšāĻ˛ā§āĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻĄāĻŋāĻ˛āĻŋāĻ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻšā§ā§ āĻ¯āĻžāĻŦā§āĨ¤ āĻāĻŦāĻ āĻ¸āĻŦāĻžāĻ° āĻļā§āĻˇā§ āĻ¤ā§ length āĻāĻŽāĻŋā§ā§ āĻĻāĻŋāĻ¤ā§ āĻšāĻŦā§ āĻ āĻŦāĻļā§āĻ¯āĨ¤
āĻāĻā§, āĻ¨āĻž āĻŦā§āĻā§ āĻĨāĻžāĻāĻ˛ā§ āĻ¨āĻŋāĻā§ āĻā§āĻĄ āĻĻā§āĻā§āĻž āĻšā§ā§āĻā§ āĻāĻŦāĻ āĻ¸āĻžāĻĨā§ āĻ¤ā§ āĻāĻŽā§āĻ¨ā§āĻ āĻāĻā§āĻāĨ¤
// shift method implement
shift() {
// āĻā§āĻ āĻāĻ°āĻž āĻšāĻā§āĻā§ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§ āĻā§āĻ¨ā§ node āĻāĻā§ āĻāĻŋ āĻ¨āĻžāĨ¤
if (!this.head) {
return null;
}
// oldNode āĻ¨āĻžāĻŽā§ āĻāĻāĻāĻŋ variable āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻŽāĻĻā§āĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ head āĻā§ āĻ°āĻžāĻāĻž āĻšāĻā§āĻā§āĨ¤
let oldHead = this.head;
// āĻā§āĻ āĻāĻ°āĻž āĻšāĻā§āĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§ āĻļā§āĻ§ā§ āĻāĻāĻāĻŋ node āĻĨāĻžāĻāĻ˛ā§ if āĻāĻžāĻ āĻāĻ°āĻŦā§ āĻ¨āĻž āĻšāĻ˛ā§ else āĻāĻžāĻ āĻāĻ°āĻŦā§āĨ¤
if (this.head === 1) {
// head āĻšā§ā§ āĻ¯āĻžāĻŦā§ null
this.head = null;
// tail āĻšā§ā§ āĻ¯āĻžāĻŦā§ null
this.tail = null;
} else {
// āĻāĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ head āĻ¯āĻžāĻŦā§ āĻāĻā§āĻ° head āĻāĻ° next āĻ āĻĨāĻžāĻāĻž node
this.head = oldHead.next;
// āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° āĻāĻā§āĻ° head āĻāĻ° next node āĻšā§ā§ āĻ¯āĻžāĻŦā§ null
oldHead.next = null
// āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻ¨āĻ¤ā§āĻ¨ head āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ āĻ¤āĻžāĻ° prev node āĻšā§ā§ āĻ¯āĻžāĻŦā§ null
this.head.prev = null;
}
// āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛āĻŋāĻ¸ā§āĻā§āĻ° length āĻāĻŽā§ āĻ¯āĻžāĻŦā§āĨ¤
this.length--;
}
- Push - O(1)
- Pop - O(n)
- Unshift - O(1)
- Shift - O(1)
- ShowAllNodeAsArray - O(n)
- Push - O(1)
- Pop - O(1)
- Unshift - O(1)
- Shift - O(1)