The Tech Platform

Jan 14, 20233 min

Data Structure: Stacks and Queues

In this article, we will give a brief introduction to Data Structure: Stacks and Queues. In this, we will also discuss the Stacks operations and Queue operations. And also, the difference between Stacks and Queues.

Let's begin..

Data Structure: Stacks

A Stack follows LIFO (Last In First Out) principle. When an element is added to the stack, it is added at the top of the stack and will be deleted from the stack from the same end. It means Stack has only one end. In other words, Insertion and Deletion are performed from one end only.

Stack Operations:

Stack is used for the following two basic operations:

  1. Push(): Pushing an element on the stack.

  2. Pop(): Removing an element out of the stack.

Push() Operation

The process of putting a new data element in the stack is known as a Push Operation. Push operation involves a series of steps −

  • Step 1 − Check if the stack is full.

  • Step 2 − If the stack is full, produces an error and exit.

  • Step 3 − If the stack is not full, increments top to point next empty space.

  • Step 4 − Adds the data element to the stack location, where the top is pointing.

  • Step 5 − Returns success.

Algorithm:

begin procedure push: stack, data
 

 
if stack is full
 
return null
 
endif
 

 
top top + 1
 
stack[top] data
 
end procedure

Pop() Operation

A Pop operation may involve the following steps −

  • Step 1 − Checks if the stack is empty.

  • Step 2 − If the stack is empty, produces an error and exit.

  • Step 3 − If the stack is not empty, accesses the data element at which top is pointing.

  • Step 4 − Decreases the value of top by 1.

  • Step 5 − Returns success.

Algorithm

begin procedure pop: stack
 
if stack is empty
 
return null
 
endif
 
data stack[top]
 
top top - 1return data
 
end procedure

Types of Stack:

There are two types of stacks:

  1. Register Stack

  2. Memory Stack

1. Register Stack

The register stack is a memory device present in the memory unit, but it handles a small amount of data. The stack depth is always limited in the register stack because the size of the register stack s very small compared to the memory.

2. Memory Stack

In the memory stack, the stack depth is flexible. It occupies a large amount of memory data, whereas, in the register stack, only a finite number of memory words will be stored.

Data Structure: Queues

Queue follows FIFO (First In First Out) principle. The Queue has two ends: REAR and FRONT. An element is added to the queue from the REAR end and an element is deleted from the queue from the FRONT end. For example, people are waiting in line for a movie ticked.

Queue Operations:

Queue performs the following two operations:

  1. Enqueue(): Add an element to the queue.

  2. Dequeue(): Remove an element to the queue.

Enqueue() Operation

The following steps should be taken to enqueue (insert) data into a queue −

  • Step 1 − Check if the queue is full.

  • Step 2 − If the queue is full, produce overflow error and exit.

  • Step 3 − If the queue is not full, increment rear pointer to point the next empty space.

  • Step 4 − Add data element to the queue location, where the rear is pointing.

  • Step 5 − return success.

Algorithm

procedure enqueue(data)if queue is full
 
return overflow
 
endif
 
rear ← rear + 1
 
queue[rear] ← data
 
return true
 
end procedure

Dequeue() Operation

The following steps are taken to perform dequeue operation −

  • Step 1 − Check if the queue is empty.

  • Step 2 − If the queue is empty, produce underflow error and exit.

  • Step 3 − If the queue is not empty, access the data where front is pointing.

  • Step 4 − Increment front pointer to point to the next available data element.

  • Step 5 − Return success.

Algorithm

procedure dequeue
 
if queue is empty
 
return underflow
 
end if
 
data = queue[front]
 
front ← front + 1return true
 
end procedure

Types of Queue:

There are four different types of queues:

  1. Simple Queue

  2. Priority Queue

  3. Circular Queue

  4. Double Ended Queue

1. Simple Queue

In this type of queue, insertion (addition) takes place from the REAR end, and deletion (Removal) takes place from the FRON end.

2. Priority Queue

In this type of queue, an element is associated with a priority and served according to its priority hence it's called a priority queue. In this, insertion is based on the arrival but the removal of an element is based on their priority. If the elements have the same priority, they are served according to their order in the queue.

3. Circular Queue

In this type of queue, the last element points to the first element which makes a circle. It is better in memory utilization because in case the last position is full but the first position is empty, it will insert an element in the first position.

4. Double Ended Queue

In this type of queue, insertion and deletion of an element can be performed from both sides: REAR and FRONT. It neither follows FIFO nor LIFO principle.

The Difference:

The Tech Platform

www.thetechplatform.com

    0