c program for doubly linked list Solution #include #include #include struct node
ID: 3557076 • Letter: C
Question
c program for doubly linked list
Explanation / Answer
#include #include #include struct node { struct node *previous; int data; struct node *next; }*head, *last; void insert_begning(int value) { struct node *var,*temp; var=(struct node *)malloc(sizeof(struct node)); var->data=value; if(head==NULL) { head=var; head->previous=NULL; head->next=NULL; last=head; } else { temp=var; temp->previous=NULL; temp->next=head; head->previous=temp; head=temp; } } void insert_end(int value) { struct node *var,*temp; var=(struct node *)malloc(sizeof(struct node)); var->data=value; if(head==NULL) { head=var; head->previous=NULL; head->next=NULL; last=head; } else { last=head; while(last!=NULL) { temp=last; last=last->next; } last=var; temp->next=last; last->previous=temp; last->next=NULL; } } int insert_after(int value, int loc) { struct node *temp,*var,*temp1; var=(struct node *)malloc(sizeof(struct node)); var->data=value; if(head==NULL) { head=var; head->previous=NULL; head->next=NULL; } else { temp=head; while(temp!=NULL && temp->data!=loc) { temp=temp->next; } if(temp==NULL) { printf(" %d is not present in list ",loc); } else { temp1=temp->next; temp->next=var; var->previous=temp; var->next=temp1; temp1->previous=var; } } last=head; while(last->next!=NULL) { last=last->next; } } int delete_from_end() { struct node *temp; temp=last; if(temp->previous==NULL) { free(temp); head=NULL; last=NULL; return 0; } printf(" Data deleted from list is %d ",last->data); last=temp->previous; last->next=NULL; free(temp); return 0; } int delete_from_middle(int value) { struct node *temp,*var,*t, *temp1; temp=head; while(temp!=NULL) { if(temp->data == value) { if(temp->previous==NULL) { free(temp); head=NULL; last=NULL; return 0; } else { var->next=temp1; temp1->previous=var; free(temp); return 0; } } else { var=temp; temp=temp->next; temp1=temp->next; } } printf("data deleted from list is %d",value); } void display() { struct node *temp; temp=head; if(temp==NULL) { printf("List is Empty"); } while(temp!=NULL) { printf("-> %d ",temp->data); temp=temp->next; } } int main() { int value, i, loc; head=NULL; printf("Select the choice of operation on link list"); printf(" 1.) insert at begning 2.) insert at at 3.) insert at middle"); printf(" 4.) delete from end 5.) reverse the link list 6.) display list 7.)exit"); while(1) { printf(" enter the choice of operation you want to do "); scanf("%d",&i); switch(i) { case 1: { printf("enter the value you want to insert in node "); scanf("%d",&value); insert_begning(value); display(); break; } case 2: { printf("enter the value you want to insert in node at last "); scanf("%d",&value); insert_end(value); display(); break; } case 3: { printf("after which data you want to insert data "); scanf("%d",&loc); printf("enter the data you want to insert in list "); scanf("%d",&value); insert_after(value,loc); display(); break; } case 4: { delete_from_end(); display(); break; } case 5: { printf("enter the value you want to delete"); scanf("%d",value); delete_from_middle(value); display(); break; } case 6 : { display(); break; } case 7 : { exit(0); break; } } } printf(" %d",last->data); display(); 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
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.