#include
#include
FILE *fin,*fout;
typedef struct studentinfo
{
char fname[10];
char lname[15];
int age;
float gpa;
struct studentinfo *next;
} RECORD;
RECORD *create(RECORD *);
void fill(RECORD *);
RECORD *enqueue(RECORD *);
RECORD *dequeue(RECORD *);
void display(RECORD *);
void main()
{
fin=fopen("Lab12inp.dat","r");
fout=fopen("Lab12out.rst","w");
RECORD *front=NULL;
while(!feof(fin))
front=create(front);
display(front);
front=dequeue(front);
display(front);
front=enqueue(front);
display(front);
}
RECORD *create(RECORD *front)
{
RECORD *process,*last;
last=process=front;
if(front==NULL){
front=(RECORD *)malloc(sizeof(RECORD));
front->next=NULL;
last=front;
}
else{
while(process->next!=NULL)
process=process->next;
last=(RECORD *)malloc(sizeof(RECORD));
process->next=last;
last->next=NULL;
}
fill(last);
return front;
}
void fill(RECORD *front)
{
fscanf(fin,"%s%s%d%f",front->fname,
front->lname,
&front->age,
&front->gpa);
}
RECORD *enqueue(RECORD *front)
{
RECORD *process, *last;
process=front;
while(process->next!=NULL)
process=process->next;
last=(RECORD *)malloc(sizeof(RECORD));
process->next=last;
last->next=NULL;
printf("\nEnter the following to create a new record:\n");
fprintf(fout,"\nEnter the following to create a new record:\n");
printf("First Name: ");
scanf("%s",last->fname);
fprintf(fout,"First Name: ");
fprintf(fout,"%s\n",last->fname);
printf("Last Name: ");
scanf("%s",last->lname);
fprintf(fout,"Last Name: ");
fprintf(fout,"%s\n",last->lname);
printf("Age:");
scanf("%d",&last->age);
fprintf(fout,"Age:");
fprintf(fout,"%d\n",last->age);
printf("GPA:");
scanf("%4f",&last->gpa);
fprintf(fout,"GPA:");
fprintf(fout,"%4.2f\n",last->gpa);
return front;
}
RECORD *dequeue(RECORD *front)
{
RECORD *tmp;
tmp=front;
front=front->next;
free(tmp);
return front;
}
void display(RECORD *front)
{
if(front==NULL){
printf("The queue is empty.\n\n");
fprintf(fout,"The queue is empty.\n\n");
}
else{
printf("\nThe queue is:\n\n");
fprintf(fout,"\nThe queue is:\n\n");
printf("First Last \n");
fprintf(fout,"First Last \n");
printf("Name NameAgeQPR\n");
fprintf(fout,"Name NameAgeQPR\n");
printf("-------------------------------------\n\n");
fprintf(fout,"-------------------------------------\n\n");
while(front!=NULL){
printf("%-10s%-15s%3d\t%5.2f\n",front->fname,
front->lname,
front->age,
front->gpa);
fprintf(fout,"%-10s%-15s%3d\t%7.2f\n",front->fname,
front->lname,
front->age,
front->gpa);
front=front->next;
}
}
}