Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- struct stack
- {
- int info;
- struct stack *next;
- }w;
- typedef struct stack *ptr;
- ptr start=NULL;
- ptr getnode()
- {
- ptr f;
- f=(ptr)malloc(sizeof(w));
- if(f==NULL)
- {
- printf("node could not be allocated\n");
- exit(1);
- }
- return f;
- }
- void main()
- {
- int a,d,s,i,count=0,y=1;
- ptr p,q;
- printf("1 to inserting an element in the begining\n");
- printf("2 to inserting an element at the end\n");
- printf("3 to inserting an element at specified position\n");
- printf("4 to delete an element from specified position\n");
- printf("5 to display elements in the link list\n");
- do
- {
- printf("enter a choice\n");
- scanf("%d",&a);
- switch(a)
- {
- case 1:
- printf("enter the data to store\n");
- scanf("%d",&s);
- p=getnode();
- p->info=s;
- p->next=start;
- start=p;
- count++;
- break;
- case 2:
- if(start==NULL)
- {
- printf("enter the data to store\n");
- scanf("%d",&s);
- p=getnode();
- p->info=s;
- p->next=start;
- start=p;
- count++;
- }
- else
- {
- q=start;
- while((q->next)!=NULL)
- q=q->next;
- printf("enter the data to store\n");
- scanf("%d",&s);
- p=getnode();
- p->info=s;
- q->next=p;
- p->next=NULL;
- count++;
- }
- break;
- case 3:
- if(start==NULL)
- printf("link list is empty enter first element\n");
- else
- {
- printf("enter the position to enter after\n");
- scanf("%d",&d);
- if(d>count)
- {
- printf("position doesnt exist\n");
- break;
- }
- }
- q=start;
- for(i=1;i<d;i++)
- q=q->next;
- printf("enter the data to store\n");
- scanf("%d",&s);
- p=getnode();
- p->info=s;
- p->next=q->next;
- q->next=p;
- count++;
- break;
- case 4:
- if(start==NULL)
- {
- printf("link list is empty\n");
- break;
- }
- printf("enter the position to delete from:\n");
- scanf("%d",&d);
- if(d>count)
- {
- printf("position doesnt exist\n");
- break;
- }
- if(d==1)
- {
- q=start;
- printf("the element being deleted is %d\n",q->info);
- start=q->next;
- free(q);
- count--;
- break;
- }
- else
- {
- q=start;
- p=start;
- for(i=1;i<d-1;i++)
- p=p->next;
- for(i=1;i<d;i++)
- q=q->next;
- printf("the element being deleted is %d\n",q->info);
- p->next=q->next;
- free(q);
- count--;
- }
- break;
- case 5:
- if(start==NULL)
- {
- printf("link list is empty\n");
- break;
- }
- else
- {
- printf("elements of link list are: \n");
- q=start;
- while(q!=NULL)
- {
- printf("%d ",q->info);
- q=q->next;
- }
- printf("\n");
- }
- break;
- default :
- printf("invalid option\n");
- break;
- }
- printf("enter 0 to exit or 1 to continue\n");
- scanf("%d",&y);
- }while(y!=0);
- }
Advertisement
Add Comment
Please, Sign In to add comment