#include <stdlib.h>
#include <string.h>
struct Artwork {
char title[100];
char author[100];
int year;
double price;
char direction[50];
struct Artwork* next;
struct Artwork* prev;
};
struct Artwork* front = NULL;
struct Artwork* rear = NULL;
void enqueue_rear() {
struct Artwork* newArtwork = (struct Artwork*)malloc(sizeof(struct Artwork));
printf("Введіть назву твору: ");
scanf("%s", newArtwork->title);
printf("Введіть автора: ");
scanf("%s", newArtwork->author);
printf("Введіть рік створення: ");
scanf("%d", &newArtwork->year);
printf("Введіть балансову ціну: ");
scanf("%lf", &newArtwork->price);
printf("Введіть художній напрям: ");
scanf("%s", newArtwork->direction);
newArtwork->next = NULL;
newArtwork->prev = rear;
if (rear == NULL) {
front = newArtwork;
} else {
rear->next = newArtwork;
}
rear = newArtwork;
}
void enqueue_front() {
struct Artwork* newArtwork = (struct Artwork*)malloc(sizeof(struct Artwork));
printf("Введіть назву твору: ");
scanf("%s", newArtwork->title);
printf("Введіть автора: ");
scanf("%s", newArtwork->author);
printf("Введіть рік створення: ");
scanf("%d", &newArtwork->year);
printf("Введіть балансову ціну: ");
scanf("%lf", &newArtwork->price);
printf("Введіть художній напрям: ");
scanf("%s", newArtwork->direction);
newArtwork->next = front;
newArtwork->prev = NULL;
if (front == NULL) {
rear = newArtwork;
} else {
front->prev = newArtwork;
}
front = newArtwork;
}
void dequeue_rear() {
if (rear == NULL) {
printf("Черга пуста.\n");
} else {
struct Artwork* temp = rear;
rear = rear->prev;
if (rear == NULL) {
front = NULL;
} else {
rear->next = NULL;
}
free(temp);
printf("Твір успішно видалено з кінця черги.\n");
}
}
void dequeue_front() {
if (front == NULL) {
printf("Черга пуста.\n");
} else {
struct Artwork* temp = front;
front = front->next;
if (front == NULL) {
rear = NULL;
} else {
front->prev = NULL;
}
free(temp);
printf("Твір успішно видалено з початку черги.\n");
}
}
void display() {
printf("\n%-25s | %-25s | %-5s | %-10s | %-15s\n", "Назва", "Автор", "Рік", "Ціна", "Напрям");
printf("------------------------------------------------------------------\n");
struct Artwork* temp = front;
while (temp != NULL) {
printf("%-25s | %-25s | %-5d | %-10.2lf | %-15s\n", temp->title, temp->author, temp->year, temp->price, temp->direction);
temp = temp->next;
}
}
int main() {
int choice;
while (1) {
printf("\nМеню:\n");
printf("1. Додати твір мистецтва в кінець черги\n");
printf("2. Додати твір мистецтва на початок черги\n");
printf("3. Видалити твір мистецтва з кінця черги\n");
printf("4. Видалити твір мистецтва з початку черги\n");
printf("5. Вивести всі дані у вигляді таблиці\n");
printf("6. Вихід\n");
printf("Ваш вибір: ");
scanf("%d", &choice);
switch (choice) {
case 1:
enqueue_rear();
break;
case 2:
enqueue_front();
break;
case 3:
dequeue_rear();
break;
case 4:
dequeue_front();
break;
case 5:
display();
break;
case 6:
exit(0);
default:
printf("Невірний вибір. Спробуйте ще раз.\n");
}
}
return 0;
}