Showing posts with label Stack. Show all posts
Showing posts with label Stack. Show all posts

Monday, 26 March 2012

Stack implementation using Linked List

0 comments

1.    Write a program to perform the following operations on a stack.(using Linked List)
    a.    PUSH   
    b.    POP
    c.    ISEMPTY
    d.    ISFULL
    e.    PEEP
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
class node
{
    int data;    //data part of node
    node *link;  // link part points to next node
public:
    node()       // constructor that set NULL to link
    {
        link = NULL;
    }

//below are functions to get/set the private members
    int getData()
    {
        return data;
    }
    void setData(int d)
    {
        data = d;
    }
    node* getLink()
    {
        return link;
    }
    void setLink(node *nnode)
    {
        link = nnode;
    }
};

// stack class
class StackLL
{
    node *top;
public:
    StackLL()// set top to NULL
    {
        top = NULL;
    }
    void push(int);
    void pop();
    void peep();
    int isEmpty();
    void display();
};

//member function's body

void StackLL :: push(int element)
{
    node *nnode;
    nnode = new node;
    nnode->setData(element);
    if(isEmpty())
    {
        top = nnode;
    }
    else
    {
        nnode->setLink(top);
        top=nnode;
    }
}
int StackLL :: isEmpty()
{
    if(top == NULL)
        return 1;
    else
        return 0;
}

void StackLL :: pop()
{
    node *ptr;
    if(isEmpty())
    {
        cout<<endl<<"Stack Underflow";
    }
    else
    {
        ptr = top;
        top = top->getLink();
        delete(ptr);
    }
}

void StackLL :: display()
{
    node *ptr;
    cout<<endl<<"\t\t\t";
    for(ptr = top; ptr!=NULL; ptr=ptr->getLink())
    {
        cout<<ptr->getData()<<endl<<endl<<"\t\t\t";
    }
}


void main()
{
    int element, ch;
    clrscr();
    cout<<endl<<"\tStack Operation using LinkedList";
    StackLL stk;

    while(1)
    {
    cout<<endl<<" 1. Insert";
    cout<<endl<<" 2. delete";
    cout<<endl<<" 3. Exit"<<endl;

    cin>>ch;
    clrscr();
    cout<<endl<<"\t\t\tStack Operation using LinkedList"<<endl;

    switch(ch)
    {
        case 1:
            cout<<endl<<"Enter data: ";
            cin>>element;

            stk.push(element);

            stk.display();
            break;
        case 2: stk.pop();
            stk.display();
            break;
        case 3:
            exit(0);
        default:
            cout<<endl<<"wrong choice"<<endl;
    }

 }
getch();
}

Sunday, 18 March 2012

Stack implementaion using Array in CPP

1 comments

Definition : Stack is linear Data Structure, it is a collection of homogeneous data elements where insertion and deletion operation take place at one end only(TOP).

Operation on stack:
  • PUSH   :   insertion into stack
  • POP      :   deletion in stack
  • PEEP    :   display the last ( TOP )  element
Write a program to perform the following operations on a stack using Array (CPP).
    a.    PUSH   
    b.    POP
    c.    ISEMPTY
    d.    ISFULL
    e.    PEEP

#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#define N 5

class Stack
{
    int sArr[N];     //stack array
    int top;
public:
    Stack()      //constructor to initialize top
    {
        top=-1;
    }

    void push(int);
    void pop();
    int isEmpty();
    int isFull();
    void peep();
    void display();
};
void Stack :: push(int element)
{
    if(isFull())
    {
        cout<<"\n Stack OverFlow";
    }
    else
    {
        top++;
        sArr[top]=element;
    }
}
void Stack :: pop()
{
    if(isEmpty())
    {
        cout<<"\n Stack UnderFlow";
    }
    else
    {
        cout<<endl<<"Deleted Element is: "<<sArr[top];
        sArr[top]=NULL;
        top--;
    }
}

int Stack :: isEmpty()
{
    if(top<0)
        return 1;
    else
        return 0;
}
int Stack :: isFull()
{
    if(top == N-1)
        return 1;
    else
        return 0;
}

void Stack :: peep()
{
    if(isEmpty())
        cout<<"\n Stack is EMPTY";
    else
        cout<<"\nTOP ELEMENT IS:  "<<sArr[top];
}
void Stack :: display()
{
    cout<<endl<<"\t\t\t";
    for(int i=top ; i >= 0 ; i--)
    {
        cout<<sArr[i]<<endl<<endl<<"\t\t\t";
    }
}


void main()
{
    Stack s;  //object creation
    int ch, data;
    clrscr();
    cout<<"\n\n STACK OPERATIONS";

    while(1)
    {

    cout<<"\n\n1. PUSH";
    cout<<"\n2. POP";
    cout<<"\n3. PEEP";
    cout<<"\n4. EXIT";
    cout<<"\nEnter Choice: ";
    cin>>ch;
    clrscr();
        cout<<"\n\n STACK OPERATIONS\n\n";

        switch(ch)
        {
        case 1:
            cout<<"\n Enter Value: ";
            cin>>data;

            s.push(data);
            s.display();
            break;
        case 2: s.pop();
            s.display();
            break;
        case 3: s.peep();
            break;
        case 4: exit(0);
            break;
        }
    }
getch();
}
 

Recent Post

Recent Comments

© 2010 IamLearningHere Template by MBT