Bird
Raised Fist0
DSA Typescriptprogramming~10 mins

Enqueue Using Linked List in DSA Typescript - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a new node with the given value.

DSA Typescript
class Node {
  value: number;
  next: Node | null;
  constructor(value: number) {
    this.value = [1];
    this.next = null;
  }
}
Drag options to blanks, or click blank then click option'
Anull
Bnext
Cvalue
Dthis
Attempts:
3 left
💡 Hint
Common Mistakes
Assigning 'null' instead of the passed value.
Assigning 'next' property instead of 'value'.
2fill in blank
medium

Complete the code to check if the queue is empty.

DSA Typescript
class Queue {
  head: Node | null = null;
  tail: Node | null = null;

  isEmpty(): boolean {
    return this.head [1] null;
  }
}
Drag options to blanks, or click blank then click option'
A===
B!==
C>=
D<=
Attempts:
3 left
💡 Hint
Common Mistakes
Using !== instead of ===, which reverses the logic.
Using > or < operators which are not suitable for null checks.
3fill in blank
hard

Fix the error in the enqueue method to correctly add a new node at the tail.

DSA Typescript
enqueue(value: number): void {
  const newNode = new Node(value);
  if (this.tail) {
    this.tail.next = [1];
  }
  this.tail = newNode;
  if (!this.head) {
    this.head = newNode;
  }
}
Drag options to blanks, or click blank then click option'
AnewNode
Bthis.head
Cnull
Dthis.tail
Attempts:
3 left
💡 Hint
Common Mistakes
Setting 'this.tail.next' to 'this.head' or 'this.tail' causing loops.
Setting 'this.tail.next' to null which breaks the chain.
4fill in blank
hard

Fill both blanks to complete the dequeue method that removes the head node and returns its value.

DSA Typescript
dequeue(): number | null {
  if (this.head === null) {
    return null;
  }
  const value = this.head.value;
  this.head = this.head.[1];
  if (this.head === null) {
    this.[2] = null;
  }
  return value;
}
Drag options to blanks, or click blank then click option'
Anext
Btail
Chead
Dprev
Attempts:
3 left
💡 Hint
Common Mistakes
Setting head to head.prev which does not exist in singly linked list.
Not updating tail when queue becomes empty.
5fill in blank
hard

Fill all three blanks to complete the printQueue method that prints all values in the queue.

DSA Typescript
printQueue(): void {
  let current = this.[1];
  while (current [2] null) {
    console.log(current.[3]);
    current = current.next;
  }
}
Drag options to blanks, or click blank then click option'
Ahead
B!==
Cvalue
Dtail
Attempts:
3 left
💡 Hint
Common Mistakes
Starting from tail instead of head.
Using '==' instead of '!==' in the loop condition.
Printing 'current.next' instead of 'current.value'.

Practice

(1/5)
1. What does the enqueue operation do in a linked list implementation of a queue?
easy
A. Removes the first element from the linked list
B. Adds a new element at the end (tail) of the linked list
C. Adds a new element at the beginning (head) of the linked list
D. Deletes the last element from the linked list

Solution

  1. Step 1: Understand enqueue operation

    Enqueue means adding an element to the queue.
  2. Step 2: Identify linked list position for enqueue

    In a linked list queue, new elements are added at the tail (end).
  3. Final Answer:

    Adds a new element at the end (tail) of the linked list -> Option B
  4. Quick Check:

    Enqueue = Add at tail [OK]
Hint: Enqueue always adds at the tail in linked list queue [OK]
Common Mistakes:
  • Confusing enqueue with dequeue operation
  • Adding new element at head instead of tail
  • Thinking enqueue removes elements
  • Mixing linked list positions
2. Which of the following is the correct TypeScript syntax to create a new node for enqueue in a linked list?
easy
A. newNode = new Node();
B. let newNode = Node(value);
C. const newNode = new Node(value);
D. const newNode = Node.new(value);

Solution

  1. Step 1: Recall TypeScript class instantiation

    To create an object, use new ClassName(params).
  2. Step 2: Check options for correct syntax

    Only const newNode = new Node(value); correctly creates a new Node instance.
  3. Final Answer:

    const newNode = new Node(value); -> Option C
  4. Quick Check:

    Use 'new' keyword to instantiate class [OK]
Hint: Use 'new' keyword to create class instances in TypeScript [OK]
Common Mistakes:
  • Omitting 'new' keyword when creating objects
  • Using function call syntax without 'new'
  • Incorrect property access like Node.new
  • Not declaring variable with let or const
3. What will be the state of the queue after executing the following enqueue operations on an empty linked list queue?
enqueue(10); enqueue(20); enqueue(30);
medium
A. 10 -> 20 -> 30 -> null
B. 30 -> 20 -> 10 -> null
C. null -> 10 -> 20 -> 30
D. 20 -> 10 -> 30 -> null

Solution

  1. Step 1: Understand enqueue order

    Enqueue adds elements at the tail, so order is preserved as inserted.
  2. Step 2: Trace each enqueue

    After enqueue(10): 10 -> null
    After enqueue(20): 10 -> 20 -> null
    After enqueue(30): 10 -> 20 -> 30 -> null
  3. Final Answer:

    10 -> 20 -> 30 -> null -> Option A
  4. Quick Check:

    Enqueue order = insertion order [OK]
Hint: Enqueue adds at tail, so order stays same as insertion [OK]
Common Mistakes:
  • Reversing order of elements after enqueue
  • Confusing enqueue with push at head
  • Misreading linked list direction
  • Ignoring null at the end
4. Consider this enqueue function snippet for a linked list queue:
enqueue(value: number) {
  const newNode = new Node(value);
  if (!this.tail) {
    this.head = newNode;
    this.tail = newNode;
    return;
  }
  this.tail.next = newNode;
  this.tail = newNode;
}

What is the bug in this code?
medium
A. It does not update the previous tail's next pointer to newNode
B. It incorrectly sets head to null when queue is empty
C. It creates newNode without value
D. It sets tail to null after enqueue

Solution

  1. Step 1: Analyze enqueue logic

    When queue is empty, head and tail should point to newNode.
  2. Step 2: Check linking of nodes

    Code sets tail = newNode but does not link old tail's next to newNode, breaking chain.
  3. Final Answer:

    It does not update the previous tail's next pointer to newNode -> Option A
  4. Quick Check:

    Link old tail's next to newNode [OK]
Hint: Always link old tail's next to new node when enqueueing [OK]
Common Mistakes:
  • Forgetting to update old tail's next pointer
  • Not handling empty queue case properly
  • Setting tail to null accidentally
  • Creating node without value parameter
5. You have a linked list queue with elements: 5 -> 15 -> 25 -> null.
After enqueue(35), what will be the correct linked list representation and tail node value?
hard
A. 5 -> 15 -> 25 -> 35 -> null, tail value = 25
B. 35 -> 5 -> 15 -> 25 -> null, tail value = 25
C. 5 -> 15 -> 25 -> null, tail value = 25
D. 5 -> 15 -> 25 -> 35 -> null, tail value = 35

Solution

  1. Step 1: Understand enqueue effect on queue

    Enqueue adds new element at tail, so 35 goes after 25.
  2. Step 2: Update tail pointer

    Tail must point to the new last node, which holds 35.
  3. Final Answer:

    5 -> 15 -> 25 -> 35 -> null, tail value = 35 -> Option D
  4. Quick Check:

    Enqueue adds at tail, tail updates to new node [OK]
Hint: Tail always points to last enqueued node [OK]
Common Mistakes:
  • Adding new node at head instead of tail
  • Not updating tail pointer after enqueue
  • Confusing tail value with head value
  • Leaving tail pointing to old last node
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard