upsidedown

Link-List implementn

Sep 16th, 2011
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.67 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. struct stack
  5. {
  6.     int info;
  7.     struct stack *next;
  8. }w;
  9.  
  10. typedef struct stack *ptr;
  11. ptr start=NULL;
  12.  
  13. ptr getnode()
  14. {
  15.     ptr f;
  16.     f=(ptr)malloc(sizeof(w));
  17.     if(f==NULL)
  18.     {
  19.         printf("node could not be allocated\n");
  20.         exit(1);
  21.     }
  22.     return f;
  23. }
  24.  
  25. void main()
  26. {
  27.     int a,d,s,i,count=0,y=1;
  28.     ptr p,q;
  29.     printf("1 to inserting an element in the begining\n");
  30.     printf("2 to inserting an element at the end\n");
  31.     printf("3 to inserting an element at specified position\n");
  32.     printf("4 to delete an element from specified position\n");
  33.     printf("5 to display elements in the link list\n");
  34.     do
  35.     {
  36.     printf("enter a choice\n");
  37.     scanf("%d",&a);
  38.     switch(a)
  39.     {
  40.     case 1:
  41.         printf("enter the data to store\n");
  42.         scanf("%d",&s);
  43.         p=getnode();
  44.         p->info=s;
  45.         p->next=start;
  46.         start=p;
  47.         count++;
  48.         break;
  49.  
  50.     case 2:
  51.         if(start==NULL)
  52.         {
  53.             printf("enter the data to store\n");
  54.             scanf("%d",&s);
  55.             p=getnode();
  56.             p->info=s;
  57.             p->next=start;
  58.             start=p;
  59.             count++;
  60.         }
  61.         else
  62.         {
  63.             q=start;
  64.             while((q->next)!=NULL)
  65.                 q=q->next;
  66.             printf("enter the data to store\n");
  67.             scanf("%d",&s);
  68.             p=getnode();
  69.             p->info=s;
  70.             q->next=p;
  71.             p->next=NULL;
  72.             count++;
  73.         }
  74.         break;
  75.  
  76.     case 3:
  77.         if(start==NULL)
  78.             printf("link list is empty enter first element\n");
  79.         else
  80.         {
  81.         printf("enter the position to enter after\n");
  82.         scanf("%d",&d);
  83.         if(d>count)
  84.         {
  85.             printf("position doesnt exist\n");
  86.             break;
  87.         }
  88.         }
  89.         q=start;
  90.         for(i=1;i<d;i++)
  91.             q=q->next;
  92.         printf("enter the data to store\n");
  93.         scanf("%d",&s);
  94.         p=getnode();
  95.         p->info=s;
  96.         p->next=q->next;
  97.         q->next=p;
  98.         count++;
  99.         break;
  100.        
  101.     case 4:
  102.         if(start==NULL)
  103.         {
  104.             printf("link list is empty\n");
  105.             break;
  106.         }
  107.         printf("enter the position to delete from:\n");
  108.         scanf("%d",&d);
  109.         if(d>count)
  110.         {
  111.             printf("position doesnt exist\n");
  112.             break;
  113.         }
  114.         if(d==1)
  115.         {
  116.             q=start;
  117.             printf("the element being deleted is %d\n",q->info);
  118.             start=q->next;
  119.             free(q);
  120.             count--;
  121.             break;
  122.         }
  123.         else
  124.         {
  125.             q=start;
  126.             p=start;
  127.             for(i=1;i<d-1;i++)
  128.                 p=p->next;
  129.             for(i=1;i<d;i++)
  130.                 q=q->next;
  131.             printf("the element being deleted is %d\n",q->info);
  132.             p->next=q->next;
  133.             free(q);
  134.             count--;
  135.         }
  136.         break;
  137.  
  138.     case 5:
  139.         if(start==NULL)
  140.         {
  141.             printf("link list is empty\n");
  142.             break;
  143.         }
  144.         else
  145.         {
  146.             printf("elements of link list are: \n");
  147.             q=start;
  148.             while(q!=NULL)
  149.             {
  150.                 printf("%d  ",q->info);
  151.                 q=q->next;
  152.             }
  153.             printf("\n");
  154.         }
  155.         break;
  156.  
  157.     default :
  158.         printf("invalid option\n");
  159.         break;
  160.     }
  161.     printf("enter 0 to exit or 1 to continue\n");
  162.     scanf("%d",&y);
  163.     }while(y!=0);
  164. }
Advertisement
Add Comment
Please, Sign In to add comment