You are on page 1of 3

#include<stdio.h> #include<string.h> #include<stdlib.

h> struct data{ char name[50]; int rank; struct data *next,*prev; }*head=NULL,*curr,*tail; void clear(){ for(int i=0;i<25;i++){ printf("\n"); } } void pushHead(char name[],int rank){ curr->next=head; head->prev=curr; head=curr; } void pushTail(char name[],int rank){ tail->next=curr; curr->prev=tail; tail=curr; } void enqueue(){ char name[50]; int rank; printf("Name : "); scanf("%[^\n]",name); fflush(stdin); printf("Rank : "); scanf("%d",&rank); fflush(stdin); curr=(struct data*)malloc(sizeof(struct data)); strcpy(curr->name,name); curr->rank=rank; if(head==NULL){ head=tail=curr; } else if(curr->rank<=head->rank){ pushHead(name,rank); } else if(curr->rank>=tail->rank){ pushTail(name,rank); } else{ struct data *temp; temp=head; while(temp->rank<=curr->rank){ temp=temp->next; } temp->prev->next=curr; curr->prev=temp->prev; curr->next=temp; temp->prev=curr; } head->prev=NULL; tail->next=NULL;

} void dequeue(){ curr=head; if(head==NULL){ printf("No data"); getchar(); } else if(head==tail){ free(curr); head=tail=curr=NULL; } else{ head=curr->next; free(curr); head->prev=NULL; } } void view(){ curr=head; if(curr==NULL){ printf("No Data"); } while(curr){ printf("Name : %s\n",curr->name); printf("Rank : %d\n\n",curr->rank); curr=curr->next; } } void popAll(){ while(head!=NULL){ curr=head; head=head->next; free(curr); } } void menu(){ printf("1. Enqueue\n"); printf("2. Dequeue\n"); printf("3. View\n"); printf("4. Exit\n"); printf("Choice : "); } int main(){ int choice; do{ clear(); menu(); scanf("%d",&choice); fflush(stdin); switch(choice){ case 1: enqueue(); break; case 2: dequeue(); break; case 3: view();

getchar(); break; } } while(choice!=4); popAll(); return 0; }

You might also like