#include #include #define max_q_len 8 typedef struct { char name[20]; char id[10]; } student; student queue[max_q_len]; int start=0; int rear=0; student get_student(); void add_to_que(int strt,int * rear,student item); student remove_from_que(int * start,int rer); void show_que_data(int strt,int rer); int is_full(int strt,int rer); int is_empty(int strt,int rer); void main_menu(void); void is_del(student tmp); int main() { textbackground(1); char c,t; while (c!='4') { clrscr(); main_menu(); c=getch(); switch (c) { case '1': if (is_full(start,rear)) { printf("\n\t\t\t\tQueue is Full!"); getchar(); } else { add_to_que(start,&rear,get_student()); } break; case '2': student temp; temp=remove_from_que(&start,rear); if (!is_empty(start,rear)) is_del(temp); break; case '3': show_que_data(start,rear); getchar(); break; case '4': return 0; default: printf("\n\t\t\tBad choise!"); printf("\n\n\n\t\t\t\tPress enter to continue!"); t=getch(); clrscr(); } } return 0; } student get_student() { student temp; clrscr(); printf("\n\t\t-----------------------------------------------------"); printf("\n\t\t*************** Enter student's info **************"); printf("\n\t\t-----------------------------------------------------"); printf("\n\n\t\tName:"); scanf("%s",temp.name); printf("\n\t\tID:"); scanf("%s",temp.id); return temp; } void add_to_que(int strt,int * rer,student item) { *rer=(*rer+1)%max_q_len; queue[*rer]=item; } student remove_from_que(int * strt,int rer) { clrscr(); if (is_empty(*strt,rer)) { printf("\n\n\n\t\t\t\t Queue Is Empty!"); getchar(); getchar(); return queue[*strt]; } else { *strt=(*strt+1)%max_q_len; return queue[*strt]; } } void show_que_data(int strt,int rer) { clrscr(); if (is_empty(strt,rer)) { printf("\n\t\t\t\t Queue is empty!"); getchar(); } else // error in index [i] for (int i=(strt+1)%max_q_len;i!=(rer+1)%max_q_len;i=(++i)%max_q_len) { printf("\n------------------------------------"); printf("\n\t\tIndex:%d\n\t\t------------------\n\t\tName:%s",i,queue[i].name); printf("\n\t\tID:%s\n",queue[i].id); } } int is_full(int strt,int rer) { if(strt==((rer+1)%max_q_len)) return 1; else return 0; } int is_empty(int strt,int rer) { if (strt==rer) return 1; else return 0; } void main_menu() { printf("\n\t\t--------------This is an queue Example---------------"); printf("\n\t\t*****************************************************"); printf("\n"); printf("\n\t\t 1: Add new item to queue."); printf("\n\t\t 2: Remove an item from queue."); printf("\n\t\t 3: Show the queue records."); printf("\n\t\t 4: Exit."); printf("\n\t\t -------------------------------------"); printf("\n\t\t Enter your choise:"); } void is_del(student tmp) { clrscr(); printf("\n\n\n------------------------------------------------------------------------------"); printf("\n*************************** This Record Is Deleted *************************** "); printf("\n------------------------------------------------------------------------------"); printf("\n\n\n\t\t\t\t Name :%s",tmp.name); printf("\n\n\t\t\t\t ID :%s",tmp.id); getchar(); getchar(); }