Untitled

 avatar
unknown
plain_text
3 years ago
3.6 kB
3
Indexable
stack

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
struct node
{
    int x;
    struct node *next;
} * top;
void push();
void pop();
void peep();
int main()
{
    int op;
    do
    {

        printf("\n1) To Push node\n2) To Pop node");
        printf("\nEnter 0 for EXIT");
        printf("\nEnter your option :\n");
        scanf("%d", &op);
        switch (op)
        {
        case 1:
            push();
            break;
        case 2:
            pop();
            break;
        case 0:
            printf("\nEnd");
            break;
        default:
            printf("\nInvalid option");
            break;
        }
    } while (op != 0);
    return 0;
}
void push()
{
    struct node *ptr;
    ptr = (struct node *)malloc(sizeof(struct node));
    if (ptr == NULL)
    {
        printf("\nstack overflow");
        return;
    }
    printf("\nPush element in node=");
    scanf("%d", &ptr->x);
    ptr->next = top;
    top = ptr;
    peep();
}
void pop()
{
    struct node *ptr;
    ptr = top;
    if (top == NULL)
    {
        printf("\nStack is empty");
        return;
    }
    printf("\n%d is poped ", ptr->x);
    top = top->next;
    free(ptr);
    peep();
}
void peep()
{
    struct node *ptr;
    ptr = top;
    if (top == NULL)
    {
        printf("\nStack is empty");
        return;
    }
    printf("Element");
    while (ptr != NULL)
    {
        printf("\n%d", ptr->x);
        ptr = ptr->next;
    }
}

queue
#include<stdio.h>
#include<stdlib.h>

struct node
{
    int data;
    struct node *next;
};
typedef struct node node;

node *front;
node *rear;
void insert();
void del();
void display();

int main ()
{
    int choice;
    while(choice != 4)
    {
        printf("\n 1.Insert an element\n 2.Delete an element\n 3.Exit\n ");
        printf("\n Enter your choice (1-3) :");
        scanf("%d", &choice);

        switch(choice)
        {
            case 1: insert();
                    display();
                    break;
            case 2: del();
                    display();
                    break;
            case 3: exit(0);
                    break;
            default: printf("\n Invalid Choice ! \n");
        }
    }
}

void insert()
{
    struct node *ptr;
    int item;

    ptr = (struct node *) malloc (sizeof(struct node));
    if(ptr == NULL)
    {
        printf("\n Overflow \n");
        return;
    }
    else
    {
        printf("\n Enter value : \n");
        scanf("%d", &item);
        ptr -> data = item;
        if(front == NULL)
        {
            front = ptr;
            rear = ptr;
            front -> next = NULL;
            rear -> next = NULL;
        }
        else
        {
            rear -> next = ptr;
            rear = ptr;
            rear->next = NULL;
        }
    }
}

void del()
{
    struct node *ptr;
    if(front == NULL)
    {
        printf("\n Underflow \n");
        return;
    }
    else
    {
        printf("\n %d is Deleted ", front -> data);
        ptr = front;
        front = front -> next;
        free(ptr);
    }
}

void display()
{
    struct node *ptr;
    ptr = front;
    if(front == NULL)
    {
        printf("\n Queue is Empty !! ");
    }
    else
    {   printf("\n Queue :\n");
        while(ptr != NULL)
        {
            printf(" %d ", ptr -> data);
            ptr = ptr -> next;
        }
    }
    printf("\n");
}