Showing posts with label linkedlist in c. Show all posts
Showing posts with label linkedlist in c. Show all posts

Tuesday, 10 July 2012

Linked list using Queue in C

#include<stdio.h>
#include<malloc.h>

#define MAXSIZE 10


void insertion();
void deletion();
void display();


struct node
{
    int info;
    struct node *link;
}

*n,*temp,*p,*front=NULL,*rear=NULL;

typedef struct node N;


void main()
{
    int ch;
    do
    {
    printf("\n\t\t\tLinked queue");
    printf("\n 1.Insertion");
    printf("\n 2.Deletion");
    printf("\n 3.Display");
    printf("\n 4.Exit");
    printf("\n Enter your choice : ");
    scanf("%d",&ch);
        switch(ch){
        case 1:
            insertion();
            break;
        case 2:
            deletion();
            break;
        case 3:
            display();
            break;
        default:
            break;
    }
}

while(ch<=3);
}




void insertion()
{
    int item;
    n=(N*)malloc(sizeof(N));
    printf("\nEnter the item : ");
    scanf("%d",&item);
    n->info=item;
    n->link=NULL;


    if(front==NULL)
        front=n;
    else
        rear->link=n;
        rear=n;
}





void deletion()
{
    if(front==NULL)
        printf("\nQueue is empty");
    else
    {
        p=front;
        printf("\nDeleted element is : %d",p->info);
        front=front->link;
        free(p);
    }
}





void display()
{
    if(front==NULL)
        printf("\nQueue is empty");
    else{
        printf("\nThe elements are : ");
        temp=front;
        while(temp!=NULL){
            printf("%d",temp->info);
            temp=temp->link;
        }
    }
}   

Linked List Using Stack in C

#include<stdio.h>
#include<malloc.h>
 
void push();
void pop();
void display();

struct node
{
    int info;
    struct node *link;
}


*start=NULL, *n, *temp, *p;

typedef struct node N;

int main()
{
    int ch, a;

    do{
        printf("\t\t\tLinked stack");
        printf("\n 1.Push");
        printf("\n 2.Pop");
        printf("\n 3.Display");
        printf("\n 4.Exit");
        printf("\n Enter your choice : ");
        scanf("%d",&ch);
        switch(ch){
                case 1:
                        push();
                        break;
                case 2:
                        pop();
                        break;
                case 3:
                        display();
                        break;
                case 4:
                        return 0;
                default:
                        printf("\nInvalid choice");
                        break;
        }
    }


while(ch >= 1 && ch <= 3);
}

void push()
{
    n=(N*)malloc(sizeof(N));
    printf("\nEnter the item : ");
    scanf("%d",&n->info);
    n->link=NULL;

    // If stack is empty
    if(start==NULL)
        start=n;

    // Otherwise move to end(top) of the stack.
    else{
        p=start;
        while(p->link!=NULL)
            p=p->link;
        p->link=n;
    }
}

void pop()
{
    // If stack is empty
    if(start==NULL)
        printf("\nStack is empty");                     
    // If there is only one item.
    else if(start->link==NULL){
        printf("\nThe deleted element is : %d",start->info);
        free(start);
        start=NULL;
    }
    // Else, move to last element.
    // 'p' holds last(top) element and 'temp' holds second last element.
    else{
        p=start;
        while(p->link!=NULL){
            temp=p;
            p=p->link;
        }
        printf("\nDeleted element is : %d\n", p->info);
        temp->link=NULL;
        free(p);
    }
}

void display()
{
    if(start==NULL)
        printf("\nStack is empty");
    else{
        printf("\nThe elements are : ");
        p=start;
        while(p!=NULL){
            printf("%d",p->info);
            p=p->link;
        }
        printf("\n");
    }
}