Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct node
- {
- int data;
- struct node *next;
- }node;
- node *head;
- void update_by_value(int,int);
- void update(int,int);
- int count();
- void input(int);
- void show();
- void inputat(int,int);
- void deletep(int);
- void deletev(int);
- void deleteall();
- void main()
- {
- head=NULL;
- int x,p;
- printf("Put Your List: ");
- while(1)
- {
- scanf("%d",&x);
- if(x==0) break;
- input(x);
- }
- show();
- printf("\nInsert at First: ");
- scanf("%d",&x);
- input(x);
- show();
- printf("\nInsert at 2nd Position: ");
- scanf("%d",&x);
- inputat(2,x);
- show();
- printf("\nInsert at Last Position: ");
- scanf("%d",&x);
- inputat(count(),x);
- show();
- printf("\nInsert at Any Position: ");
- scanf("%d %d",&p,&x);
- inputat(p,x);
- show();
- printf("\nUpdate Based on Position: ");
- scanf("%d %d",&p,&x);
- update(p,x);
- show();
- printf("\nUpdate By Value: ");
- scanf("%d %d",&p,&x);
- update_by_value(p,x);
- show();
- printf("\nDelete Based On Position: ");
- scanf("%d",&p);
- deletep(p);
- show();
- printf("\nDelete By Value: ");
- scanf("%d",&x);
- deletev(x);
- show();
- printf("\nDelete All? Press 1: ");
- scanf("%d",&x);
- if(x==1)
- {
- deleteall();
- printf("\nList is Deleted\n");
- }
- }
- void deleteall()
- {
- while(head!=NULL)
- {
- node *temp=head;
- head=head->next;
- temp->next=NULL;
- free(temp);
- }
- }
- void deletev(int x)
- {
- node *temp = head,*temp1;
- int i=1;
- int p;
- while(temp!=NULL)
- {
- if(temp->data==x)
- {
- if(i==1)
- {
- head=temp->next;
- temp->next=NULL;
- free(temp);
- return;
- }
- p=i;
- temp=head;
- for(i=1;i<p-1;i++)
- {
- temp=temp->next;
- }
- temp1=temp;
- temp1=temp1->next;
- temp->next=temp1->next;
- temp1->next=NULL;
- free(temp1);
- return;
- }
- temp=temp->next;
- i++;
- }
- }
- void deletep(int p)
- {
- node *temp=head,*temp1;
- if(p==1)
- {
- head=temp->next;
- temp->next=NULL;
- free(temp);
- return;
- }
- int i;
- temp=head;
- for(i=1;i<p-1;i++)
- {
- temp=temp->next;
- }
- temp1=temp;
- temp1=temp1->next;
- temp->next=temp1->next;
- temp1->next=NULL;
- free(temp1);
- }
- void update_by_value(int p,int x)
- {
- node *temp = head;
- while(temp!=NULL)
- {
- if(temp->data==p)
- {
- temp->data=x;
- }
- temp=temp->next;
- }
- }
- void update(int p,int x)
- {
- if(p==1)
- {
- head->data=x;
- return;
- }
- int i;
- node *temp1=head;
- for(i=1;i<p;i++)
- {
- temp1=temp1->next;
- }
- temp1->data=x;
- }
- int count()
- {
- node *temp = head;
- int i=1;
- while(temp!=NULL)
- {
- i++;
- temp=temp->next;
- }
- return i;
- }
- void inputat(int p,int v)
- {
- node *temp = (node*)malloc(sizeof(node));
- node *temp2,*temp1;
- temp->data=v;
- temp->next=NULL;
- if(p==1)
- {
- temp->next=head;
- head=temp;
- return;
- }
- int i;
- temp1=head;
- for(i=1;i<p-1;i++)
- {
- temp1=temp1->next;
- }
- temp->next=temp1->next;
- temp1->next=temp;
- }
- void input(int x)
- {
- node *temp = (node*)malloc(sizeof(node));
- temp->data=x;
- temp->next=NULL;
- if(head!=NULL)
- temp->next=head;
- head=temp;
- }
- void show()
- {
- node *temp = head;
- printf("List is: ");
- while(temp!=NULL)
- {
- printf("%d ",temp->data);
- temp=temp->next;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement