Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //singly circular link list
- #include<stdio.h>
- #include<conio.h>
- #include<stdlib.h>
- struct sll
- {
- int info;
- struct sll *next;
- }*temp=NULL,*next=NULL,*start=NULL,*prev=NULL,*node=NULL;
- void create_node()
- {
- node=(struct sll *)malloc(sizeof(struct sll));
- if(node==NULL)
- {
- printf("\n NOde is not allocated\n");
- return;
- }
- printf("\n Enter the val: ");
- scanf("%d",&node->info);
- node->next=NULL;
- }
- void display()
- {
- if(start==NULL)
- {
- printf("\n Csll is Empty");
- return;
- }
- printf("\n Displayed ");
- temp=start;
- if(start->next==start)
- {
- printf("\n %d",start->info);
- return;
- }
- printf("\n %d",start->info);
- temp=start->next;
- while(temp!=start)
- {
- printf("\n %d",temp->info);
- temp=temp->next;
- }
- }
- void insert_at_posi()
- {
- int i,val,flag=0;
- printf("\n Enter the position:");
- scanf("%d",&val);
- //temp=start;
- if(val==1)
- {
- create_node();
- if(start==NULL)
- {
- node->next=node;
- start=node;
- display();
- return;
- }
- else
- {
- node->next=start;
- temp=start->next;
- while(temp->next!=start)
- {
- temp=temp->next;
- }
- temp->next=node;
- start=node;
- display();
- return;
- }
- //{
- }
- i=2;
- prev=start;
- temp=start->next;
- while(temp->next!=start)
- {
- if(i==val)
- {
- create_node();
- prev->next=node;
- node->next=temp;
- flag=1;
- display();
- break;
- }
- prev=temp;
- i++;
- temp=temp->next;
- }
- if(flag==0)
- {
- printf("\n Invalid possition ");
- }
- }
- void revers()
- {
- if(start==NULL || start->next==start)
- {
- display();
- return;
- }
- prev=start;
- temp=start->next;
- while(temp->next!=start)
- {
- next=temp->next;
- temp->next=prev;
- prev=temp;
- temp=next;
- }
- start->next=temp;
- temp->next=prev;
- start=temp;
- display();
- }
- void del()
- {
- if(start==NULL)
- {
- display();
- return;
- }
- if(start->next==start)
- {
- printf("\n %d is deleted ",start->info);
- free(start);
- start=NULL;
- display();
- return;
- }
- prev=start;
- temp=start->next;
- while(temp->next!=start)
- {
- prev=temp;
- temp=temp->next;
- }
- prev->next=temp->next;
- printf("\n %d is deleted",temp->info);
- free(temp);
- display();
- }
- int main()
- {
- int ch;
- clrscr();
- do
- {
- printf("\n Menu");
- printf("\n 1. Insert at posi");
- printf("\n 2. Delete at end");
- printf("\n 3. Revers the list");
- printf("\n 4. display");
- printf("\n Enter your choice: ");
- scanf("%d",&ch);
- switch(ch)
- {
- case 1:
- insert_at_posi();
- break;
- case 2:
- del();
- break;
- case 3:
- revers();
- break;
- case 4:
- display();
- break;
- }
- }while(ch>=1 && ch<=4);
- getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement