#include <stdio.h>
#include <stdlib.h>
struct SMS
{
char number[14];
char text[161];
struct SMS *next;
};
struct Queue
{
struct SMS *front;
struct SMS *back;
};
void push(struct Queue *queue, struct SMS *new)
{
if(queue->front == NULL)
{
queue->front = queue->back = new;
}
else
{
queue->back->next=new;
new->next=NULL;
queue->back=new;
}
}
struct SMS *pop(struct Queue *queue)
{
struct SMS * buf;
if(queue->front == NULL) return NULL;
if(queue->front == queue->back)
{
buf = queue->front;
queue->front = queue->back=NULL;
return buf;
}
buf = queue->front;
queue->front=queue->front->next;
return buf;
}
int main()
{
char response = 'n';
struct Queue queue = {NULL, NULL};
struct SMS *sms = NULL;
do
{
sms = (struct SMS *) malloc(sizeof(struct SMS));
printf("Zielnummer: ");
scanf("%13s", sms->number);
printf("SMS-Text: ");
scanf("%160s", sms->text);
push(&queue, sms);
printf("Weitere SMS (j/n): ");
scanf(" %c", &response);
} while (response != 'n' && response != 'N');
printf("\n");
while( (sms = pop(&queue)) )
{
printf("Sende ... \n");
printf("%s - %s\n", sms->number, sms->text);
printf(" ... fertig\n\n");
free(sms);
}
printf("\nEine weitere SMS kommt an ...\n\n");
sms = (struct SMS *) malloc(sizeof(struct SMS));
printf("Zielnummer: ");
scanf("%13s", sms->number);
printf("SMS-Text: ");
scanf("%160s", sms->text);
push(&queue, sms);
printf("\n");
sms = pop(&queue);
printf("Sende ... \n");
printf("%s - %s\n", sms->number, sms->text);
printf(" ... fertig\n\n");
free(sms);
return 0;
}
【TUM-EI-Programmieren】406 SMS
于 2023-02-21 09:25:44 首次发布