Friday, 9 September 2016

Stack In C++


#include <iostream>

using namespace std;

typedef struct stack_node{

    int var;
    stack_node *next;
};

stack_node *Push(stack_node **head , int val){

    stack_node *temp = (*head);

    stack_node *new_node = new stack_node;
    new_node->var = val;
    new_node->next = NULL;

    if (temp != NULL)
        new_node->next = (*head);

    (*head) = new_node;

    return new_node;
}

int StackSize(stack_node **head){

    stack_node *temp = (*head);
    int stack_size = 0;

    while (temp->next != NULL) {
        ++stack_size;
        temp = temp->next;
    }
    return stack_size;
}

void Pop(stack_node **head){

    stack_node *temp = (*head);

    if (temp != NULL)
        (*head) = temp->next;

    cout << "Poped node value is : " << temp->var << endl;
    delete temp;
}

int main()
{
    stack_node *head = new stack_node;

    head->next = NULL;

    Push( &head , 10);
    Push( &head , 5);
    Push( &head , 3);
    Push( &head , 9);

    cout << "Stack Size : " << StackSize(&head) << endl;

    Pop(&head);
    cout << "Stack Size : " << StackSize(&head) << endl;

    Pop(&head);
    cout << "Stack Size : " << StackSize(&head) << endl;

    Pop(&head);
    cout << "Stack Size : " << StackSize(&head) << endl;

    Pop(&head);
    cout << "Stack Size : " << StackSize(&head) << endl;

    return 0;
}

#include <iostream>

using namespace std;

typedef struct stack_node{

    int var;
    stack_node *next;
};

stack_node *Push(stack_node **head , int val){

    stack_node *temp = (*head);

    stack_node *new_node = new stack_node;
    new_node->var = val;
    new_node->next = NULL;

    if (temp != NULL)
        new_node->next = (*head);

    (*head) = new_node;

    return new_node;
}

int StackSize(stack_node **head){

    stack_node *temp = (*head);
    int stack_size = 0;

    while (temp->next != NULL) {
        ++stack_size;
        temp = temp->next;
    }
    return stack_size;
}

void Pop(stack_node **head){

    stack_node *temp = (*head);

    if (temp != NULL)
        (*head) = temp->next;

    cout << "Poped node value is : " << temp->var << endl;
    delete temp;
}

int main()
{
    stack_node *head = new stack_node;

    head->next = NULL;

    Push( &head , 10);
    Push( &head , 5);
    Push( &head , 3);
    Push( &head , 9);

    cout << "Stack Size : " << StackSize(&head) << endl;

    Pop(&head);
    cout << "Stack Size : " << StackSize(&head) << endl;

    Pop(&head);
    cout << "Stack Size : " << StackSize(&head) << endl;

    Pop(&head);
    cout << "Stack Size : " << StackSize(&head) << endl;

    Pop(&head);
    cout << "Stack Size : " << StackSize(&head) << endl;

    return 0;
}

Output:

Stack Size : 4
Poped node value is : 9
Stack Size : 3
Poped node value is : 3
Stack Size : 2
Poped node value is : 5
Stack Size : 1
Poped node value is : 10
Stack Size : 0

No comments:

Post a Comment