Showing posts with label python. Show all posts
Showing posts with label python. Show all posts

Friday, October 30, 2020

CREATING STACK IN PYTHON

CREATING STACK USING PYTHON



OPERATIONS:

1- PUSH

2- POP

OTHER OPERATIONS:

1- IS EMPTY

2- SIZE

3- TOP



CODE : 

We can implement stack using :

1- list

2- collections.deque

3- queue.LifoQueue


1 - IMPLEMENTING STACK USING LIST

CODE:

stack = []  // list is created to be used as stack
stack.append('a') // append() push the element in stack which is actually a list
stack.append('b')
stack.append('c')
print(stack.pop()) // pop() is used to pop / delete element on top of list
print(stack.pop())
print(stack.pop())

print(stack)


2- IMPLEMENTING STACK USING collections.deque


from collections import deque  // importing the library
stack = deque() // initializing a variable

stack.append('a') // append function to insert element
stack.append('b')
stack.append('c')

print(stack.pop())  // pop() function to remove the top element
print(stack.pop())
print(stack.pop())

print(stack)

3- IMPLEMENTING STACK USING queue module

Functions available in this module are :

1- get() - remove and return the element from queue
2- put(element) - put element in the queue
3- maxsize() - maximum elements allowed
4- empty() - check whether stack is empty or not
5- full() - check whether stack is full or not if maxsize is declared
6- qsize() - get number of items in queue

CODE:

from queue import LifoQueue
stack = LifoQueue(maxsize = 5)
// initializing stack with maxsize = 5
print(stack.qsize()) // show the number of elements in the stack
stack.put('a')  // put() is used to push elements in the stack
stack.put('b')
stack.put('c')
print("Full: ", stack.full())  // is the stack full or does stack contain maxsize elements
print(stack.get()) // return and remove the top element of the stack
print(stack.get())
print(stack.get())
print("Is Empty : ", stack.empty()) // test is the stack empty or not






IMPLEMENTING STACK USING LINKEDLIST

 IMPLEMENTING STACK USING LINKEDLIST


This provide us ability to define our own data structure and point it to another same data structure using pointers which can be done dynamically .

Here , Since we are using Linked list we will use malloc and free ( in C ) to allocate memory and then deallocate it when needed.


Structure or Linked list Node




Header Files



OPERATIONS


NOTE : Since  , performing operations on head is easy and efficient so  we will choose head node as top node and will perform all operations on head node 


1- PUSH





2- IS EMPTY



    

3- TOP



4- POP














STACK : INTRODUCTION | OPERATIONS | REAL LIFE EXAMPLE | IMPLEMENTATION

 What Is Stack

. Linear Data Structure

TWO OPERATION : 

1 - PUSH : Entering the data on the top or at the end






2- POP : Remove the top element or latest element





So, Stack performs LIFO operation where LIFO stands for Last In First Out.

Nowadays every language has some more operations i.e. Peek, Is empty, Is full , size 

3 - PEEK : It help us to check the top entry without deleting it

4- IS EMPTY : this checks whether the stack is empty or not and provides boolean value (true / false)

5- IS FULL : this checks whether the stack is full or not in non dynamic data structure. If you are using standard library then it resize dynamically .

6- SIZE : this gives the size of the stack




Whenever you get stack , think it to be a data structure where you have to preform insertions and deletion on the same end what ever data structure you are using.

Real Life Example :

1- Plates stacked over one another
2- Stacked books

So , the book on top is the first book to be taken . Although it was the last book to place . Similarly
in marriages the top most dinner plate is the first plate to be taken and used.


APPLICATION OF STACK

1- Undo - Redo features 

2- Infix to Prefix or Postfix

3- Balancing the symbols

4- Used in Algorithms 
    a) Rat in maze
    b) N Queen Problem
    c) Tower of Hanoi
    d) Stock span problem
    e) Topological Sorting
    f) Strongly Connected Components

5- Syntax Parsing

6- Browser back button

7- Useful for performing operations like Backtracking in Programming


IMPLEMENTATION

You can use any data structure to perform this operation :

1- Array
2- Linkedlist

If you use standard library , you can use the data structure provided such as stack (we will see the implementation soon ) which is dynamic and provided certain operations.