Introduction to
Stacks in C
Stacks are a fundamental data structure in computer
science, widely used for managing data in various
programming tasks. They are particularly valuable in C
programming, where they enable efficient storage and
retrieval of data in a Last-In, First-Out (LIFO) manner. This
presentation will delve into the intricacies of stacks, their
implementation in C, and their practical applications.
by Shaik Subahan
What is a Stack?
LIFO Structure Real-World Analogy Key Operations
A stack operates on a Last-In, Imagine a stack of plates. You Stacks support essential
First-Out (LIFO) principle. The can only add or remove plates operations: push (adding an
last element added to the stack from the top of the stack. The element), pop (removing an
is the first one to be removed. last plate you added is the first element), peek (accessing the
one you'll take off. top element), and isEmpty
(checking if the stack is empty).
Stack Data Structure
Array Implementation Linked List Implementation
A stack can be implemented using an array, with a A stack can also be implemented using a linked
pointer (top) indicating the top element. list, where each node points to the next element.
• Fixed Size • Dynamic Size
• Efficient for known data sizes • Suitable for unknown data sizes
Stack Operations
1 Push 2 Pop
Adds an element to Removes and returns
the top of the stack. the element at the top
of the stack.
3 Peek 4 isEmpty
Returns the element at Checks if the stack is
the top of the stack empty.
without removing it.
Implementing a Stack in C
1 Define Structure
Create a structure to represent the stack. It will
typically include an array to store the elements, a
pointer (top) to the top element, and the maximum
size of the stack.
2 Initialize Stack
Initialize the stack by setting the top pointer to -1
(indicating an empty stack) and defining the maximum
size.
3 Implement Operations
Define functions for push, pop, peek, and isEmpty
operations, ensuring they handle the stack's state
correctly.
Pushing and Popping
Elements
Push Operation
To push an element, check if the stack is full. If
not, increment the top pointer, and store the
new element at the indicated index in the stack
array.
Pop Operation
To pop an element, check if the stack is empty.
If not, retrieve the element at the top index,
decrement the top pointer, and return the
retrieved element.
Stack Applications
Function Calls Managing function calls and return addresses
Expression Evaluation Converting infix expressions to postfix and evaluating them
Undo/Redo Functionality Storing and retrieving previous actions for undo/redo
operations
Browser History Managing the history of visited web pages
Advantages and
Disadvantages of Stacks
Efficiency LIFO Order
Stacks offer fast insertion and The LIFO structure makes them
deletion operations at the top of ideal for scenarios where the last
the stack. element added should be
accessed first.
Fixed Size Limited Access
Array implementations may have Access to elements other than
a fixed size, limiting the amount the top element is restricted,
of data they can hold. making them unsuitable for
applications requiring random
access.
Infix, Prefix, and Postfix Notations
Infix Notation Prefix Notation Postfix Notation
The traditional way of writing The operator precedes the The operator follows the
expressions, with the operator operands (e.g., + 2 3) operands (e.g., 2 3 +)
in between the operands (e.g.,
2 + 3)