Write a method push_front(Type someItem) that adds someItem to the front of the
ID: 3651992 • Letter: W
Question
Write a method push_front(Type someItem) that adds someItem to the front of the list and pushes the other nodes in the list back. Iterators must be used not just indexes.Explanation / Answer
# include # include # include # include 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(" ====================================="); printf(" 1.Create \ Appending The List"); printf(" 2.Insert Node At Begining"); printf(" 3.Insert Node In Middle"); printf(" 4.Deleting a Node"); printf(" 5.Counting The No Of Nodes"); printf(" 6.Displaying the list"); printf(" 7.Exit"); oper: gotoxy(1,15);printf(" "); gotoxy(1,11);printf(" Enter 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': printf("Enter The Data : "); scanf("%d",&num); in_begin(&p,num); break; case '3': printf(" Enter The Position :"); scanf("%d",&loc); printf(" Enter The Data : "); scanf("%d",&num); in_middle(&p,loc,num); break; case '4': printf(" Enter The Data u Want To Delete : "); scanf("%d",&num); del(&p,num); break; case '5': printf(" The No Of Nodes Are %d",count(p)); getch(); break; case '6': display(p); getch(); break; case '7': printf(" Quiting......."); 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; } 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(" Empty Link List.Can't Display The Data"); getch(); goto last; } while(q!=NULL) { printf(" %d",q->data); q=q->link; } last: } int count(struct node *q) { int c=0; if(q==NULL) { printf("Empty Link List. "); 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.Can't 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(" Link List Is Empty.Can't Insert."); getch(); 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(" Node Specified Doesn't Exist.Cant Enter The Data"); getch(); } else { printf("Data Inserted"); getch(); } last: getch(); } void del(struct node**q,int num) { if(*q==NULL) { printf(" Empty 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(" Data Not Found..."); else printf(" Data Deleted...Tap a key to continue"); getch(); } last: getch(); }Related Questions
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.