Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //SLL
- #include<stdio.h>
- #include<conio.h>
- #include<stdlib.h>
- //struct of node
- struct sll
- {
- int info;
- struct sll *next;
- }*start=NULL,*temp=NULL,*prev=NULL,*node=NULL,*next1=NULL;
- //create node
- void create_node()
- {
- int val;
- node=(struct sll *)malloc(sizeof(struct sll));
- if(node==NULL)
- {
- printf("\n Memory not allocated");
- return;
- }
- printf("\nEnter the Value: ");
- scanf("%d",&val);
- node->info=val;
- node->next=NULL;
- }
- //display the sll
- void disp()
- {
- if(start==NULL)
- {
- printf("\n The S.L.L. is empty");
- }
- else
- {
- temp=start;
- while(temp!=NULL)
- {
- printf("\n\t %d",temp->info);
- temp=temp->next;
- }
- }
- }
- //Insert from begining
- void insert_beg()
- {
- create_node();
- if(start==NULL)
- {
- start=node;
- }
- else
- {
- node->next=start;
- start=node;
- }
- disp();
- }
- //Insert from End
- void insert_end()
- {
- if(start==NULL)
- {
- insert_beg();
- }
- else
- {
- temp=start;
- while(temp->next!=NULL)
- {
- temp=temp->next;
- }
- create_node();
- temp->next=node;
- disp();
- }
- }
- // insert after specific value;
- void insert_after_val()
- {
- int val,flag=0;
- if(start==NULL)
- {
- printf("\n Empty S.L.L. For Values");
- }
- else
- {
- printf("Enter the specific value from sll: ");
- scanf("%d",&val);
- temp=start;
- while(temp->next!=NULL)
- {
- if(temp->info==val)
- {
- create_node();
- node->next=temp->next;
- temp->next=node;
- flag=1;
- break;
- }
- temp=temp->next;
- }
- if(flag==0)
- {
- printf("\n[ Value does not FOUND ]");
- }
- else
- {
- disp();
- }
- }
- }
- //insert via position
- void insert_after_posi()
- {
- int val,flag=0,i=0;
- if(start==NULL)
- {
- printf("\n[ Empty S.L.L. for position ]");
- }
- else
- {
- printf("Enter the specific position from sll: ");
- scanf("%d",&val);
- temp=start;
- while(temp!=NULL)
- {
- i++;
- if(i==val)
- {
- create_node();
- node->next=temp->next;
- temp->next=node;
- flag=1;
- break;
- }
- temp=temp->next;
- }
- if(flag==0)
- {
- printf("\n[Position is invalid]");
- }
- else
- {
- disp();
- }
- }
- }
- //delete from begining
- void del_beg()
- {
- int data;
- if(start==NULL)
- {
- printf("\n[ No value for Delete ]");
- }
- else
- {
- temp=start;
- start=temp->next;
- free(temp);
- }
- disp();
- }
- //delete from End
- void del_end()
- {
- int data;
- if(start==NULL)
- {
- printf("\n[ No value for Delete ]");
- return;
- }
- temp=start;
- if(temp->next==NULL)
- {
- del_beg();
- return;
- }
- else
- {
- while(temp->next!=NULL)
- {
- prev=temp;
- temp=temp->next;
- }
- prev->next=NULL;
- free(temp);
- }
- disp();
- }
- //delete at specific value;
- void del_at_val()
- {
- int data,flag=0,val;
- if(start==NULL)
- {
- printf("\n[ No value for Delete ]");
- return;
- }
- else
- {
- printf("\n Enter the Value from Sll: ");
- scanf("%d",&val);
- temp=start;
- if(start->info==val)
- {
- del_beg();
- return;
- }
- while(temp!=NULL)
- {
- if((temp->info)==val)
- {
- flag=1;
- prev->next=temp->next;
- free(temp);
- break;
- }
- prev=temp;
- temp=temp->next;
- }
- if(flag==0)
- {
- printf("\n [ Invalid Value for delete ]");
- }
- else
- {
- disp();
- }
- }
- }
- //delete at specific position;
- void del_at_pos()
- {
- int data,flag=0,val,i=0;
- if(start==NULL)
- {
- printf("\n[ No value for Delete ]");
- return;
- }
- else
- {
- printf("\n Enter the position from Sll: ");
- scanf("%d",&val);
- temp=start;
- if(start->info==val)
- {
- del_beg();
- return;
- }
- while(temp!=NULL)
- {
- i++;
- if(1==val)
- {
- del_beg();
- return;
- }
- if(i==val)
- {
- flag=1;
- prev->next=temp->next;
- free(temp);
- break;
- }
- prev=temp;
- temp=temp->next;
- }
- if(flag==0)
- {
- printf("\n [ Invalid Value for delete ]");
- }
- else
- {
- disp();
- }
- }
- }
- // main functions;
- int main()
- {
- int ch;
- do
- {
- printf("\n\t===>\tMenu\t<===");
- printf("\n\t1.Insert from begining");
- printf("\n\t2.Insert at the end");
- printf("\n\t3.Insert after specific value");
- printf("\n\t4.Insert after specific position");
- printf("\n\t5.delete from begining");
- printf("\n\t6.delete from End");
- printf("\n\t7.delete specific value");
- printf("\n\t8.Insert after specific position");
- printf("\n\t9.Display");
- printf("\n\t10 EXIT");
- printf("\n\n Enter your choice: ");
- scanf("%d",&ch);
- switch(ch)
- {
- case 1:
- insert_beg();
- break;
- case 2:
- insert_end();
- break;
- case 3:
- insert_after_val();
- break;
- case 4:
- insert_after_posi();
- break;
- case 5:
- del_beg();
- break;
- case 6:
- del_end();
- break;
- case 7:
- del_at_val();
- break;
- case 8:
- del_at_pos();
- break;
- case 9:
- disp();
- break;
- default:
- printf("\n (*_*)²");
- break;
- }
- }while(ch>=1 && ch<10);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement