#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct node{
char name[101];
char event[21];
char kondisi[21];
int prioritas;
}*head=NULL,*tail=NULL;
void pushHead(char name[],char event[],char kondisi[],int prioritas){
struct node
*curr
= (struct node
*)malloc
(sizeof(struct node
)); strcpy(curr->name,name);
strcpy(curr->event,event);
strcpy(curr->kondisi,kondisi);
curr->prioritas = prioritas;
if(head==NULL){
head=tail=curr;
}else{
head = curr;
}
}
void pushTail(char name[],char event[],char kondisi[],int prioritas){
struct node
*curr
= (struct node
*)malloc
(sizeof(struct node
)); strcpy(curr->name,name);
strcpy(curr->event,event);
strcpy(curr->kondisi,kondisi);
curr->prioritas = prioritas;
if(head==NULL){
head=tail=curr;
}else{
tail = curr;
}
}
void pushMid(char name[],char event[],char kondisi[],int prioritas){
struct node
*curr
= (struct node
*)malloc
(sizeof(struct node
)); strcpy(curr->name,name);
strcpy(curr->event,event);
strcpy(curr->kondisi,kondisi);
curr->prioritas = prioritas;
if(head==NULL){
head=tail=curr;
}else if(curr->prioritas < head->prioritas){
pushHead(name,event,kondisi,prioritas);
}else if(curr->prioritas > tail->prioritas){
pushTail(name,event,kondisi,prioritas);
}else{
struct node *temp = head;
while(curr->prioritas >= temp->prioritas){
}
}
}
void view(){
struct node *temp = head;
if(temp!=NULL){
if(temp->prioritas == 1){
printf("%s is in the emergency room",temp
->name); }else if(temp->prioritas==2){
printf("%s is in the examination room",temp
->name); }else{
printf("%s is in the consultation room",temp
->name); }
}
puts("");
puts("WAITING ROOM");
while(temp!=0){
printf("%s, ",temp
->next->name); }
}
void popHead(){
if(head==NULL)return;
else{
struct node *curr = head;
// curr= NULL;
free(curr);
curr= NULL;
}
}
int main(){
int num;
scanf("%d",&num);getchar();
char c1[101];
char c2[101];
char c3[101];
int prioritas;
for(int i =0 ; i < num ; i++){
scanf("%s",c1);getchar();
// scanf(" %s %s",c2,c3);
printf("Input patient data : "); scanf("%s %s",c2,c3);getchar();
prioritas = 3;
pushMid(c2,c1,c3,prioritas);
}else if(strcmp(c3
,"serious")==0 ){ prioritas = 2;
pushMid(c2,c1,c3,prioritas);
}else if(strcmp(c3
,"critical")==0){ prioritas = 1;
pushMid(c2,c1,c3,prioritas);
}
}else if(strcmp(c1
,"call")==0){
view();
popHead();
}
}
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RyaW5nLmg+CiNpbmNsdWRlPHN0ZGxpYi5oPgoKc3RydWN0IG5vZGV7CgkKCWNoYXIgbmFtZVsxMDFdOwoJY2hhciBldmVudFsyMV07CgljaGFyIGtvbmRpc2lbMjFdOwoJaW50IHByaW9yaXRhczsKCQoJc3RydWN0IG5vZGUgKm5leHQ7CglzdHJ1Y3Qgbm9kZSAqcHJldjsKCQp9KmhlYWQ9TlVMTCwqdGFpbD1OVUxMOwoKdm9pZCBwdXNoSGVhZChjaGFyIG5hbWVbXSxjaGFyIGV2ZW50W10sY2hhciBrb25kaXNpW10saW50IHByaW9yaXRhcyl7CgkKCXN0cnVjdCBub2RlICpjdXJyID0gKHN0cnVjdCBub2RlKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBub2RlKSk7CglzdHJjcHkoY3Vyci0+bmFtZSxuYW1lKTsKCXN0cmNweShjdXJyLT5ldmVudCxldmVudCk7CglzdHJjcHkoY3Vyci0+a29uZGlzaSxrb25kaXNpKTsKCWN1cnItPnByaW9yaXRhcyA9IHByaW9yaXRhczsKCQoJaWYoaGVhZD09TlVMTCl7CgkJaGVhZD10YWlsPWN1cnI7Cgl9ZWxzZXsKCQkKCQloZWFkLT5wcmV2ID0gY3VycjsKCQljdXJyLT5uZXh0ID0gaGVhZDsKCQljdXJyLT5wcmV2ID0gTlVMTDsKCQloZWFkID0gY3VycjsKCgl9Cn0KCnZvaWQgcHVzaFRhaWwoY2hhciBuYW1lW10sY2hhciBldmVudFtdLGNoYXIga29uZGlzaVtdLGludCBwcmlvcml0YXMpewoJCglzdHJ1Y3Qgbm9kZSAqY3VyciA9IChzdHJ1Y3Qgbm9kZSopbWFsbG9jKHNpemVvZihzdHJ1Y3Qgbm9kZSkpOwoJc3RyY3B5KGN1cnItPm5hbWUsbmFtZSk7CglzdHJjcHkoY3Vyci0+ZXZlbnQsZXZlbnQpOwoJc3RyY3B5KGN1cnItPmtvbmRpc2ksa29uZGlzaSk7CgljdXJyLT5wcmlvcml0YXMgPSBwcmlvcml0YXM7CgkKCWlmKGhlYWQ9PU5VTEwpewoJCWhlYWQ9dGFpbD1jdXJyOwoJfWVsc2V7CgkJCgkJdGFpbC0+bmV4dCA9IGN1cnI7CgkJY3Vyci0+cHJldiA9IHRhaWw7CgkJY3Vyci0+bmV4dCA9IE5VTEw7CgkJdGFpbCA9IGN1cnI7CgkJCgl9Cn0KCnZvaWQgcHVzaE1pZChjaGFyIG5hbWVbXSxjaGFyIGV2ZW50W10sY2hhciBrb25kaXNpW10saW50IHByaW9yaXRhcyl7CgkKCXN0cnVjdCBub2RlICpjdXJyID0gKHN0cnVjdCBub2RlKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBub2RlKSk7CglzdHJjcHkoY3Vyci0+bmFtZSxuYW1lKTsKCXN0cmNweShjdXJyLT5ldmVudCxldmVudCk7CglzdHJjcHkoY3Vyci0+a29uZGlzaSxrb25kaXNpKTsKCWN1cnItPnByaW9yaXRhcyA9IHByaW9yaXRhczsKCQoJaWYoaGVhZD09TlVMTCl7CgkJaGVhZD10YWlsPWN1cnI7Cgl9ZWxzZSBpZihjdXJyLT5wcmlvcml0YXMgPCBoZWFkLT5wcmlvcml0YXMpewoJCXB1c2hIZWFkKG5hbWUsZXZlbnQsa29uZGlzaSxwcmlvcml0YXMpOwoJfWVsc2UgaWYoY3Vyci0+cHJpb3JpdGFzID4gdGFpbC0+cHJpb3JpdGFzKXsKCQlwdXNoVGFpbChuYW1lLGV2ZW50LGtvbmRpc2kscHJpb3JpdGFzKTsKCX1lbHNlewoJCQoJCXN0cnVjdCBub2RlICp0ZW1wID0gaGVhZDsKCQkKCQl3aGlsZShjdXJyLT5wcmlvcml0YXMgPj0gdGVtcC0+cHJpb3JpdGFzKXsKCQkJdGVtcCA9IHRlbXAtPm5leHQ7CgkJfQoJCQoJCQl0ZW1wLT5wcmV2ID0gY3VycjsKCQkJY3Vyci0+bmV4dCA9IHRlbXA7CgkJCXRlbXAtPnByZXYtPm5leHQgPSBjdXJyOwoJCQljdXJyLT5wcmV2ID0gdGVtcC0+cHJldjsJCgkJCQoJfQp9Cgp2b2lkIHZpZXcoKXsKCQoJc3RydWN0IG5vZGUgKnRlbXAgPSBoZWFkOwoJCglpZih0ZW1wIT1OVUxMKXsKCQlpZih0ZW1wLT5wcmlvcml0YXMgPT0gMSl7CgkJCXByaW50ZigiJXMgaXMgaW4gdGhlIGVtZXJnZW5jeSByb29tIix0ZW1wLT5uYW1lKTsKCQl9ZWxzZSBpZih0ZW1wLT5wcmlvcml0YXM9PTIpewoJCQlwcmludGYoIiVzIGlzIGluIHRoZSBleGFtaW5hdGlvbiByb29tIix0ZW1wLT5uYW1lKTsJCgkJfWVsc2V7CgkJCXByaW50ZigiJXMgaXMgaW4gdGhlIGNvbnN1bHRhdGlvbiByb29tIix0ZW1wLT5uYW1lKTsKCQl9Cgl9CgkKCXB1dHMoIiIpOwoJcHV0cygiV0FJVElORyBST09NIik7CgkKCXdoaWxlKHRlbXAhPTApewoJCXByaW50ZigiJXMsICIsdGVtcC0+bmV4dC0+bmFtZSk7CgkJdGVtcCA9IHRlbXAtPm5leHQ7Cgl9CgkKCQoJCn0KCnZvaWQgcG9wSGVhZCgpewoJCglpZihoZWFkPT1OVUxMKXJldHVybjsKCWVsc2V7CgkJc3RydWN0IG5vZGUgKmN1cnIgPSBoZWFkOwoJCWhlYWQgPSBoZWFkLT5uZXh0OwoJCWhlYWQtPnByZXYgPSBOVUxMOwovLwkJY3Vycj0gTlVMTDsKCQlmcmVlKGN1cnIpOwoJCWN1cnI9IE5VTEw7Cgl9Cn0KCmludCBtYWluKCl7CgoJaW50IG51bTsKCXNjYW5mKCIlZCIsJm51bSk7Z2V0Y2hhcigpOwoJCgljaGFyIGMxWzEwMV07CgljaGFyIGMyWzEwMV07CgljaGFyIGMzWzEwMV07CglpbnQgcHJpb3JpdGFzOwoJCglmb3IoaW50IGkgPTAgOyBpIDwgbnVtIDsgaSsrKXsKCQkKCQlzY2FuZigiJXMiLGMxKTtnZXRjaGFyKCk7CgkJCi8vCQlzY2FuZigiICVzICVzIixjMixjMyk7CgkJCgkJCWlmKHN0cmNtcChjMSwiYWRkIik9PTApewoJCQkJCgkJCQlwcmludGYoIklucHV0IHBhdGllbnQgZGF0YSA6ICIpOwoJCQkJc2NhbmYoIiVzICVzIixjMixjMyk7Z2V0Y2hhcigpOwoJCQkJCgkJCQlpZihzdHJjbXAoYzMsImdvb2QiKT09MCB8fCBzdHJjbXAoYzMsImZhaXIiKT09MCl7CgkJCQkJcHJpb3JpdGFzID0gMzsKCQkJCQlwdXNoTWlkKGMyLGMxLGMzLHByaW9yaXRhcyk7CgkJCQl9ZWxzZSBpZihzdHJjbXAoYzMsInNlcmlvdXMiKT09MCApewoJCQkJCXByaW9yaXRhcyA9IDI7CgkJCQkJcHVzaE1pZChjMixjMSxjMyxwcmlvcml0YXMpOwoJCQkJfWVsc2UgaWYoc3RyY21wKGMzLCJjcml0aWNhbCIpPT0wKXsKCQkJCQlwcmlvcml0YXMgPSAxOwoJCQkJCXB1c2hNaWQoYzIsYzEsYzMscHJpb3JpdGFzKTsKCQkJCX0KCQkJCQoJCQl9ZWxzZSBpZihzdHJjbXAoYzEsImNhbGwiKT09MCl7CgkJCQkKCQkJCSB2aWV3KCk7CgkJCQkgcG9wSGVhZCgpOwkKCQkJCSAJCgkJCX0KCQkJCgkJfQoJCQoJcmV0dXJuIDA7Cn0=
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct node{
char name[101];
char event[21];
char kondisi[21];
int prioritas;
struct node *next;
struct node *prev;
}*head=NULL,*tail=NULL;
void pushHead(char name[],char event[],char kondisi[],int prioritas){
struct node *curr = (struct node*)malloc(sizeof(struct node));
strcpy(curr->name,name);
strcpy(curr->event,event);
strcpy(curr->kondisi,kondisi);
curr->prioritas = prioritas;
if(head==NULL){
head=tail=curr;
}else{
head->prev = curr;
curr->next = head;
curr->prev = NULL;
head = curr;
}
}
void pushTail(char name[],char event[],char kondisi[],int prioritas){
struct node *curr = (struct node*)malloc(sizeof(struct node));
strcpy(curr->name,name);
strcpy(curr->event,event);
strcpy(curr->kondisi,kondisi);
curr->prioritas = prioritas;
if(head==NULL){
head=tail=curr;
}else{
tail->next = curr;
curr->prev = tail;
curr->next = NULL;
tail = curr;
}
}
void pushMid(char name[],char event[],char kondisi[],int prioritas){
struct node *curr = (struct node*)malloc(sizeof(struct node));
strcpy(curr->name,name);
strcpy(curr->event,event);
strcpy(curr->kondisi,kondisi);
curr->prioritas = prioritas;
if(head==NULL){
head=tail=curr;
}else if(curr->prioritas < head->prioritas){
pushHead(name,event,kondisi,prioritas);
}else if(curr->prioritas > tail->prioritas){
pushTail(name,event,kondisi,prioritas);
}else{
struct node *temp = head;
while(curr->prioritas >= temp->prioritas){
temp = temp->next;
}
temp->prev = curr;
curr->next = temp;
temp->prev->next = curr;
curr->prev = temp->prev;
}
}
void view(){
struct node *temp = head;
if(temp!=NULL){
if(temp->prioritas == 1){
printf("%s is in the emergency room",temp->name);
}else if(temp->prioritas==2){
printf("%s is in the examination room",temp->name);
}else{
printf("%s is in the consultation room",temp->name);
}
}
puts("");
puts("WAITING ROOM");
while(temp!=0){
printf("%s, ",temp->next->name);
temp = temp->next;
}
}
void popHead(){
if(head==NULL)return;
else{
struct node *curr = head;
head = head->next;
head->prev = NULL;
// curr= NULL;
free(curr);
curr= NULL;
}
}
int main(){
int num;
scanf("%d",&num);getchar();
char c1[101];
char c2[101];
char c3[101];
int prioritas;
for(int i =0 ; i < num ; i++){
scanf("%s",c1);getchar();
// scanf(" %s %s",c2,c3);
if(strcmp(c1,"add")==0){
printf("Input patient data : ");
scanf("%s %s",c2,c3);getchar();
if(strcmp(c3,"good")==0 || strcmp(c3,"fair")==0){
prioritas = 3;
pushMid(c2,c1,c3,prioritas);
}else if(strcmp(c3,"serious")==0 ){
prioritas = 2;
pushMid(c2,c1,c3,prioritas);
}else if(strcmp(c3,"critical")==0){
prioritas = 1;
pushMid(c2,c1,c3,prioritas);
}
}else if(strcmp(c1,"call")==0){
view();
popHead();
}
}
return 0;
}