Bird
Raised Fist0
DSA C#programming~5 mins

Stack Implementation Using Array in DSA C# - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Stack Implementation Using Array
O(1)
Understanding Time Complexity

We want to understand how fast stack operations run when using an array.

How does the time to push or pop items change as the stack grows?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


public class Stack {
    private int[] arr;
    private int top = -1;
    private int capacity;

    public Stack(int size) {
        arr = new int[size];
        capacity = size;
    }

    public void Push(int item) {
        if (top == capacity - 1) throw new InvalidOperationException("Stack Overflow");
        arr[++top] = item;
    }

    public int Pop() {
        if (top == -1) throw new InvalidOperationException("Stack Underflow");
        return arr[top--];
    }
}
    

This code shows how to add (push) and remove (pop) items from a stack using an array.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Single step to add or remove an item at the top index.
  • How many times: Each push or pop does one operation regardless of stack size.
How Execution Grows With Input

Each push or pop takes the same small amount of work no matter how many items are in the stack.

Input Size (n)Approx. Operations
101
1001
10001

Pattern observation: The time stays the same even as the stack grows larger.

Final Time Complexity

Time Complexity: O(1)

This means each push or pop operation takes a constant amount of time, no matter how big the stack is.

Common Mistake

[X] Wrong: "Push or pop takes longer as the stack gets bigger because the array is bigger."

[OK] Correct: The operations only change one position at the top, so the size of the array does not affect the time.

Interview Connect

Knowing that stack operations run in constant time shows you understand efficient data structures, a key skill in many coding challenges.

Self-Check

"What if the stack used a linked list instead of an array? How would the time complexity change?"

Practice

(1/5)
1. What is the main purpose of using an array in a stack implementation?
easy
A. To allow random access to elements anywhere in the stack
B. To store elements in a fixed-size, ordered collection
C. To automatically resize the stack when full
D. To sort elements as they are added

Solution

  1. Step 1: Understand stack storage

    A stack stores elements in order, last-in first-out, so it needs a structure to hold elements sequentially.
  2. Step 2: Role of array in stack

    An array provides a fixed-size, ordered collection to hold stack elements efficiently.
  3. Final Answer:

    To store elements in a fixed-size, ordered collection -> Option B
  4. Quick Check:

    Stack uses array for fixed order storage [OK]
Hint: Stack uses array for fixed order storage, not random access [OK]
Common Mistakes:
  • Thinking array resizes automatically
  • Confusing stack with queue behavior
  • Assuming array sorts elements
2. Which of the following is the correct way to declare an integer stack array of size 5 in C#?
easy
A. int[] stack = new int[5];
B. int stack = new int[5];
C. int[] stack = int[5];
D. stack int[] = new int(5);

Solution

  1. Step 1: Recall C# array declaration syntax

    In C#, arrays are declared with type[], variable name, and new type[size].
  2. Step 2: Match correct syntax

    int[] stack = new int[5]; matches this pattern: int[] stack = new int[5];
  3. Final Answer:

    int[] stack = new int[5]; -> Option A
  4. Quick Check:

    C# array declaration = int[] name = new int[size]; [OK]
Hint: Use type[] name = new type[size]; for arrays in C# [OK]
Common Mistakes:
  • Missing [] after type
  • Using parentheses instead of brackets
  • Incorrect variable declaration order
3. What will be the output after the following operations on a stack implemented using an array of size 3?
Push(10); Push(20); Pop(); Push(30); Pop(); Pop();

Assume the stack is initially empty and prints the popped values.
medium
A. 20 30 10
B. 20 30 20
C. 20 30 30
D. 10 20 30

Solution

  1. Step 1: Trace each operation step-by-step

    Push(10) stack=[10]
    Push(20) stack=[10,20]
    Pop() removes 20, output=20, stack=[10]
    Push(30) stack=[10,30]
    Pop() removes 30, output=30, stack=[10]
    Pop() removes 10, output=10, stack=[]
  2. Step 2: Collect popped outputs in order

    The popped values printed are 20, then 30, then 10.
  3. Final Answer:

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

    Stack LIFO pop order = 20 30 10 [OK]
Hint: Pop prints last pushed element, follow LIFO order [OK]
Common Mistakes:
  • Confusing push and pop order
  • Assuming FIFO instead of LIFO
  • Missing last pop output
4. Identify the error in this stack push method code snippet in C#:
public void Push(int item) {
  if (top == stack.Length) {
    Console.WriteLine("Stack Overflow");
  }
  stack[top] = item;
  top++;
}
medium
A. top should be compared with stack.Length - 1
B. top++ should be before assigning stack[top]
C. No return after overflow check causes overwrite
D. stack array should be resized when full

Solution

  1. Step 1: Analyze overflow check logic

    The code checks if top == stack.Length and prints overflow, but continues to assign and increment top anyway.
  2. Step 2: Identify missing control flow after overflow

    Without a return or exit after overflow message, the code overwrites stack[top] causing error.
  3. Final Answer:

    No return after overflow check causes overwrite -> Option C
  4. Quick Check:

    Overflow check must stop push to avoid overwrite [OK]
Hint: Stop push after overflow check to prevent overwrite [OK]
Common Mistakes:
  • Assuming top comparison off by one
  • Moving top++ before assignment causes wrong index
  • Ignoring need to stop after overflow
5. You want to implement a stack using an array that doubles its size automatically when full. Which approach correctly achieves this in C#?
hard
A. Increase the size of the existing array using stack.Resize() method
B. Overwrite oldest elements when stack is full to make space
C. Use a List<int> instead of array to avoid resizing manually
D. Create a new array double the size, copy elements, then assign it to the stack variable

Solution

  1. Step 1: Understand array resizing in C#

    Arrays have fixed size; to resize, create a new larger array and copy elements over.
  2. Step 2: Evaluate options for resizing stack array

    Create a new array double the size, copy elements, then assign it to the stack variable correctly describes creating a new array double the size, copying elements, and reassigning stack variable.
  3. Final Answer:

    Create a new array double the size, copy elements, then assign it to the stack variable -> Option D
  4. Quick Check:

    Resize array by new array + copy + assign [OK]
Hint: Arrays fixed size; resize by new array and copy [OK]
Common Mistakes:
  • Assuming arrays can resize in place
  • Using non-existent Resize method on arrays
  • Overwriting data instead of resizing
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