Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
////////////////////////////////////////////////////////////////////////        -: Singly Link list :-            ////////...
printf("Enter The Data : ");                        scanf("%d",&num);                        in_begin(&p,num);            ...
r = (struct node *)malloc(sizeof(struct node));                 r->data=num;                 r->link=NULL;                ...
goto last;        }        else        while(temp!=NULL)        { if(c==loc)                 { n = (struct node *)malloc(s...
}
Upcoming SlideShare
Loading in …5
×

26656476 singly-linked-iist-programme-as-in-understanding-pointers-in-c-by-yashwant-kanetkar

1,813 views

Published on

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

26656476 singly-linked-iist-programme-as-in-understanding-pointers-in-c-by-yashwant-kanetkar

  1. 1. //////////////////////////////////////////////////////////////////////// -: Singly Link list :- //////////////////////////////////////////////////////////////////////* reference : Understandng pointer though c - Y karnetkar.*///////////////////////////////////////////////////////////////////// Programmer : Harsh chandra ///////////////////////////////////////////////////////////////////# include<stdio.h># include<conio.h># include<alloc.h># include<stdlib.h>struct node{ int data; struct node *link;};void append(struct node **,int);void in_begin(struct node **,int);void del(struct node **,int);void in_middle(struct node **,int,int);int count(struct node *);void display(struct node *);void main(){ struct node *p; /* p can be said as the head or a start ptr */ p=NULL; /* Printing the menu */ int num,loc; char choice; do { clrscr(); printf("PROGRAM TO IMPLEMENT SINGLY LINKED LIST "); printf("n====================================="); printf("nn1.Create Appending The List"); printf("n2.Insert Node At Begining"); printf("n3.Insert Node In Middle"); printf("n4.Deleting a Node"); printf("n5.Counting The No Of Nodes"); printf("n6.Displaying the list"); printf("n7.Exit"); oper: gotoxy(1,15);printf(" "); gotoxy(1,11);printf("nnEnter ur Choice : "); choice=getch(); switch(choice) { case 1: char ans; do { printf("Enter any number : "); scanf("%d",&num); append(&p,num); printf("Enter more (y/n) :"); fflush(stdin); ans=getchar(); }while(ans !=n); break; case 2:
  2. 2. printf("Enter The Data : "); scanf("%d",&num); in_begin(&p,num); break; case 3: printf("nEnter The Position :"); scanf("%d",&loc); printf("nEnter The Data : "); scanf("%d",&num); in_middle(&p,loc,num); break; case 4: printf("nEnter The Data u Want To Delete : "); scanf("%d",&num); del(&p,num); break; case 5: printf("nThe No Of Nodes Are %d",count(p)); getch(); break; case 6: display(p); getch(); break; case 7: printf("nnQuiting......."); getch(); exit(0); break; default: gotoxy(1,15);printf("Invalid choice.Please Enter Correct Choice"); getch(); goto oper; } }while(choice !=7);}void append(struct node **q,int num){ struct node *temp,*r; temp = *q; if(*q==NULL) { temp = (struct node *)malloc(sizeof(struct node)); temp->data=num; temp->link=NULL; *q=temp; } else { temp = *q; while(temp->link !=NULL) { temp=temp->link; }
  3. 3. r = (struct node *)malloc(sizeof(struct node)); r->data=num; r->link=NULL; temp->link=r; }}void display(struct node *q){ if(q==NULL) { printf("nnEmpty Link List.Cant Display The Data"); getch(); goto last; } while(q!=NULL) { printf("n%d",q->data); q=q->link; } last:}int count(struct node *q){ int c=0; if(q==NULL) { printf("Empty Link List.n"); getch(); goto last; } while(q!=NULL) { c++; q=q->link; } last: return c;}void in_begin(struct node **q,int num){ struct node *temp; if(*q==NULL) { printf("Link List Is Empty.Cant Insert."); getch(); goto last; } else { temp=(struct node *)malloc(sizeof(struct node)); temp->data=num; temp->link=*q; *q=temp; /* pointing to the first node */ } last: getch();}void in_middle(struct node **q,int loc,int num){ struct node *temp,*n; int c=1,flag=0; temp=*q; if(*q==NULL) { printf("nnLink List Is Empty.Cant Insert."); getch();
  4. 4. goto last; } else while(temp!=NULL) { if(c==loc) { n = (struct node *)malloc(sizeof(struct node)); n->data=num; n->link=temp->link; temp->link=n; flag=1; } c++; temp=temp->link; } if(flag==0) { printf("nnNode Specified Doesnt Exist.Cant Enter The Data"); getch(); } else { printf("Data Inserted"); getch(); } last: getch();}void del(struct node**q,int num){ if(*q==NULL) { printf("nnEmpty Linked List.Cant Delete The Data."); getch(); goto last; } else { struct node *old,*temp; int flag=0; temp=*q; while(temp!=NULL) { if(temp->data==num) { if(temp==*q) /* First Node case */ *q=temp->link; /* shifted the header node */ else old->link=temp->link; free(temp); flag=1; } else { old=temp; temp=temp->link; } } if(flag==0) printf("nData Not Found..."); else printf("nData Deleted...Tap a key to continue"); getch(); } last: getch();
  5. 5. }

×