Search This Blog

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

Wednesday, 13 January 2016

Queue using Linked List

/*Queue using Linked List*/

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

    typedef struct queue
    {

    int data;
    struct queue *next;

    }node;

    node *rear=NULL;
    node *front=NULL;
    node *getnode()
    {

    int val;
    node *temp;
    printf("Enter val:");
    scanf("%d",&val);
    temp=(node *)malloc(sizeof(node));
    temp->data=val;
    temp->next=NULL;
    return temp;

    }
    void insert()
    {

    node *neww;
    neww=getnode();
    if(front==NULL)
    {
         front=rear=neww;
    }
    else
    {
         rear->next=neww;
         rear=neww;
    }

    }
    void del()
    {

    if(front==NULL)
    {
         printf("\nQueue is Empty!\n");
    }
    else
    {
         node *t;
         t=front;
         printf("\n%d is deleted\n",front->data);
         front=front->next;
         t->next=NULL;
         free(t);
    }

    }
    void display()
    {

    if(front==NULL)
    {
          printf("\nEmpty!\n");
    }
    else
    {
         node *t;
         t=front;
         printf("\n");
         while(t)
         {
              printf("%d ",t->data);
              t=t->next;
         }
         printf("\n");
    }

    }
    void main()
    {

    int ch;
    clrscr();
    while(1)
    {
    printf("\n1.insert\n2.delete\n3.display\n4.exit\nYour choice:");
    scanf("%d",&ch);

    switch(ch)
    {
    case 1:insert();
    break;

    case 2:del();
    break;

    case 3:display();
    break;

    case 4:exit(0);
    break;

    default:printf("\nProper choice plz!\n");
    }

    }
    }

Stack Using Liked List

/* Stack Using Linked List*/

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

typedef struct stack
{

int data;
struct stack *next;

}node;
node *top=NULL;

node *getnode()
{

int val;
node *temp;
printf("Enter val");
scanf("%d",&val);
temp=(node *)malloc(sizeof(node));
temp->data=val;
temp->next=NULL;
return temp;

}
void push()
{

node *neww;
neww=getnode();
neww->next=top;
top=neww;

}
void pop()
{

if(top==NULL)
{
      printf("\nStack is Empty!\n");
}
else
{
     node *t;
     t=top;
     printf("\n%d is deleted\n",top->data);
     top=top->next;
     t->next=NULL;
     free(t);
}

}
void peep()
{

     printf("\nTop element is %d",top->data);
}

void display()
{

if(top==NULL)
{
     printf("\nEmpty!\n");
}
else
{
     node *t;
     t=top;
     while(t)
     {
          printf("\n%d",t->data);
          t=t->next;
     }
     printf("\n");
}

}
void main()
{

int ch;
clrscr();
while(1)
{
printf("\n1.push\n2.pop\n3.peep\n4.display\n5.exit\nYour choice:");
scanf("%d",&ch);

switch(ch)
{
case 1:push();
break;

case 2:pop();
break;

case 3:peep();
break;

case 4:display();
break;

case 5:exit(0);
break;

default:printf("\nProper choice plz!\n");
}
}

}

Doubly Linked List

/*Doubly Linked List*/

    #include<stdio.h>
    #include<conio.h>
    typedef struct dll{

    int data;
    struct dll *next;
    struct dll *prev;

    }node;

    node *getnode()
    {

    int item;
    node *temp;
    temp=(node *)malloc(sizeof(node));
    printf("\nenter data:");
    scanf("%d",&item);
    temp->data=item;
    temp->next=NULL;
    temp->prev=NULL;
    return temp;

    }

    node *create()
    {

    int ch;
    node *trv,*start,*neww;
    start=trv=NULL;

    do
    {
         neww=getnode();
         if(start==NULL)
         {
              start=neww;
              trv=start;
         }
         else
         {
              trv->next=neww;
              neww->prev=trv;
              trv=trv->next;
         }

         printf("\nEnter any key to continue & 0 for stop:");
         scanf("%d",&ch);
    }while(ch!=0);
    return start;

    }
    node *insert_first(node *start)
    {

    node *trv,*neww;
    trv=start;
    neww=getnode();
    if(start==NULL)
    {
         start=neww;
    }
    else
    {
         neww->next=start;
         start->prev=neww;
         start=neww;
    }
    return start;

    }

    node *insert_last(node *start)
    {

    node *trv,*neww;
    trv=start;
    neww=getnode();
    if(start==NULL)
    {
         start=neww;
    }
    else
    {
         while(trv->next!=NULL)
         {
              trv=trv->next;
         }
         trv->next=neww;
         neww->prev=trv;
    }
    return start;

    }
    node *del_first(node *start)
    {

    node *trv;
    trv=start;
    start=start->next;
    start->prev=NULL;
    free(trv);
    return start;

    }
    node *del_last(node *start)
    {

    node *trv,*p;
    trv=start;
    if(start==NULL)
    {
         printf("\nEmpty\n");
    }
    else if(start->next==NULL)
    {
         free(start);
         start=NULL;
    }
    else
    {
         while(trv->next!=NULL)
         {
              p=trv;
              trv=trv->next;
         }
    }
    p=trv->prev;
    p->next=NULL;
    free(trv);
    return start;

    }
    void display(node *start)
    {

    node *trv;
    trv=start;
    if(start==NULL)
    {
         printf("\nNo node to display\n");
    }
    printf("\n");
    while(trv!=NULL)
    {
         printf("%d ",trv->data);
         trv=trv->next;
    }

    }

    void main()
    {

    node *f=NULL,*l=NULL;
    node *s=NULL;
    int ch;
    clrscr();
    while(1)
    {
    printf("\n1.Create\n2.Insert at front\n3.Insert at last\n4.Delete at front\n5.Delete at last\n6.Display\n10.exit\nYour choice:");
    scanf("%d",&ch);

         switch(ch)
         {
         case 1:s=create();
         break;

         case 2:s=insert_first(s);
         break;

         case 3:s=insert_last(s);
         break;

         case 4:s=del_first(s);
         break;

         case 5:s=del_last(s);
         break;

         case 6:display(s);
         break;

         case 10:exit(0);
         break;

         default:printf("\nEnter proper choice\n");
         }
    }

    }

Circular Linked List

/* Circular Linked List*/

    #include<stdio.h>
    #include<conio.h>

    typedef struct cll{

    int data;
    struct cll *next;

    }node;

    node *getnode()
    {

    node *temp;
    int item;
    printf("\nEnter data:");
    scanf("%d",&item);
    temp=(node *)malloc(sizeof(node));
    temp->data=item;
    temp->next=NULL;
    return temp;

    }

    node *create()
    {

    int ch;
    node *start,*neww,*trv;
    start=NULL;
    trv=NULL;
    do
    {
         neww=getnode();
         if(start==NULL)
         {
              neww->next=neww;
              start=neww;
              trv=start;
          }
          else
          {
               trv->next=neww;
               neww->next=start;
               trv=trv->next;
          }

    printf("\nEnter any key to add & 0 for stop:");
    scanf("%d",&ch);

    }
    while(ch!=0);
    return start;

    }

    node *insert_first(node *start)
    {

    node *trv,*neww;
    trv=start;
    neww=getnode();

    if(start==NULL)
    {
         start=neww;
         neww->next=neww;
    }
    else
    {
         while(trv->next!=start)
         {
              trv=trv->next;
         }
         trv->next=neww;
         neww->next=start;
         start=neww;
         }
     return start;

    }
    void insert_last(node *start)
    {

    node *trv,*neww;
    trv=start;
    neww=getnode();
    if(start==NULL)
    {
          neww=start;
          neww->next=neww;
    }
    else
    {
         while(trv->next!=start)
         {
              trv=trv->next;
         }
         trv->next=neww;
         neww->next=start;
    }

    }
    node *del_first(node *start)
    {

    node *trv;
    trv=start;
    if(start==NULL)
    {
         printf("\n\Empty\n");
    }
    else if(start->next==start)
    {
         start->next=NULL;
         free(start);
         start=NULL;
    }
    else
    {
          while(trv->next!=start)
          {
              trv=trv->next;
          }
          trv->next=start->next;
          trv=start;
          start=start->next;
          free(trv);
    }
    return start;

    }
    node *del_last(node *start)
    {

    node *trv,*temp;
    trv=start;
    if(start==NULL)
    {
         printf("\n\Empty\n");
    }
    else if(start->next==start)
    {
          start->next=NULL;
          free(start);
          start=NULL;
    }
    else
    {
          while((trv->next)->next!=start)
          {
               trv=trv->next;
          }
          temp=trv->next;
          trv->next=start;
          free(temp);
    }
    return start;

    }
    void display(node *start)
    {

    node *trv;
    trv=start;
    if(start==NULL)
    {
        printf("\nEmpty !\n");
    }
    printf("\n%d ",trv->data);
    trv=trv->next;

    while(trv!=start)
    {
          printf("%d ",trv->data);
          trv=trv->next;
    }

    }

    void main()
    {

    int ch;
    node *s=NULL;
    clrscr();
    while(1)
    {
         printf("\n1.Create\n2.insert_first\n3.insert_last\n4.delete           first\n5.delete_last\n6.Display\n10.exit\nYour choice:");
         scanf("%d",&ch);

         switch(ch)
         {
              case 1:s=create();
              break;

              case 2:s=insert_first(s);
              break;

              case 3:insert_last(s);
              break;

              case 4:s=del_first(s);
              break;

              case 5:s=del_last(s);
              break;

              case 6:display(s);
              break;

              case 10:exit(0);
              break;
    
              default:printf("\nEnter proper choice\n");
         }
    }

    }

Linked List


/* Linked List all operations */

    #include<stdio.h>
    #include<conio.h>

    typedef struct ll
    {

         struct ll *next;
         int data;

    }node;

    node *getnode()
    {

         int item;
         node *temp;
         temp=(node *)malloc(sizeof(node));
         printf("\nenter data:");
         scanf("%d",&item);
         temp->data=item;
         temp->next=NULL;
         return temp;

    }

    node *create()
    {

         int ch;
         node *trv,*start,*neww;
         start=trv=NULL;
         do
         {
              neww=getnode();
              if(start==NULL)
              {
                   start=neww;
                   trv=start;
              }
              else
              {
                   trv->next=neww;
                   trv=trv->next;
              }
              printf("\nEnter any key to continue & 0 for stop:");
              scanf("%d",&ch);
         }
         while(ch!=0);
         return start;

    }

    node *insert_before_val(node *start)
    {

    node *neww,*trv,*prv;
    int val;
    if(start==NULL)
    {
         printf("you should atleast create link list");
    }
    else
    {
         trv=start;
         printf("\nEnter value before you want to add new value:");
         scanf("%d",&val);
         while(trv->data!=val && trv!=NULL)
         {
              prv=trv;
              trv=trv->next;
         }
         if(trv==NULL)
         {
              printf("make sure that %d is there",val);
         }
         else
         {
              neww=getnode();
              neww->next=prv->next;
              prv->next=neww;
         }
    }

    }

    int search(node *start,int ele)
    {

    int pos;
    node *trv;
    pos=0;
    trv=start;
    while(trv!=NULL)
    {
         pos++;
         if(trv->data==ele)
         {
              break;
         }
         trv=trv->next;
    }
    return pos;

    }

    int count(node *start)
    {

    int c=0;
    node *trv;
    trv=start;
    while(trv!=NULL)
    {
          c++;
          trv=trv->next;
    }
    return c;

    }

    void insert_after_val(node *start)
    {
    node *trv,*neww;
    int val;
    trv=start;
    if(start==NULL)
    {
    printf(“atleast create a node”);
    }
    else
    {
    printf(“\nEnter value after you want to add element\n”);
    scanf(“%d”,&val);
    while(trv->data!=val && trv!=NULL)
    {
    trv=trv->next;
    }
    if(trv==NULL)
    {
    printf(“\nmake sure %d is there\n”,val);
    }
    else
    {
    neww=getnode();
    neww->next=trv->next;
    trv->next=neww;
    }
    }

    }
    node *insert_first(node *start)
    {

    node *neww;
    neww=getnode();
    if(start==NULL)
    {
         neww=start;
    }
    else
    {
         neww->next=start;
         start=neww;
    }
    return start;

    }
    node *insert_last(node *start)
    {
    node *neww,*trv;
    neww=getnode();
    if(start==NULL)
    {
    start=neww;
    }
    else
    {
    trv=start;
    while(trv->next!=NULL)
    {
    trv=trv->next;
    }
    trv->next=neww;
    }
    return start;
    }
    node *del_first(node *start)
    {
    node *trv;
    trv=start;
    if(start==NULL)
    {
    printf(“\nAlready empty\n”);
    }
    printf(“\n%d is deleted\n”,start->data);
    start=start->next;
    free(trv);
    return start;
    }
    void *del_last(node *start)
    {
    node *trv,*prv;
    trv=start;
    if(start==NULL)
    {
    printf(“\nEmpty!\n”);
    }
    else
    {

    while(trv->next!=NULL)
    {
    prv=trv;
    trv=trv->next;
    }
    printf(“%d is deleted”,trv->data);
    prv->next=NULL;
    free(trv);
    }
    }
    void display(node *start)
    {
    node *trv;
    trv=start;
    if(start==NULL)
    {
    printf(“\nNo node to display\n”);
    }
    printf(“\n”);
    while(trv!=NULL)
    {
    printf(“%d “,trv->data);
    trv=trv->next;
    }

    }
    void main()
    {
    int ch,c,p,ele;
    node *s=NULL;
    clrscr();
    while(1)
    {
    printf(“\n\n1.Create\n2.Insert front\n3.insert last\n4.Delete first\n5.Delete last\n6.display\n7.insert before value\n8.insert after val\n9.count\n10.search\n15.exit:”);
    scanf(“%d”,&ch);

    switch(ch)
    {
    case 1:s=create();
    break;

    case 2:s=insert_first(s);
    break;

    case 3:s=insert_last(s);
    break;

    case 4:s=del_first(s);
    break;

    case 5:del_last(s);
    break;

    case 6:display(s);
    break;

    case 7:insert_before_val(s);
    break;

    case 8:insert_after_val(s);
    break;

    case 9:c=count(s);
    printf(“\ntotal node are %d\n”,c);
    break;

    case 10:
    printf(“\nEnter element to search:”);
    scanf(“%d”,&ele);
    p=search(s,ele);
    printf(“%d found at %d position”,ele,p);
    break;

    case 15:exit(0);
    break;

    default:printf(“\nEnter proper choice\n”);
    }
    }
    }