Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Classic queue
- // C-Programm
- #include <stdio.h>
- #include <stdlib.h>
- #include <malloc.h>
- typedef struct tnode // узел
- {
- int value;
- struct tnode * next;
- }node, *p_node;
- typedef struct tqueue // очередь
- {
- int count = 0;
- node * head;
- node * tail;
- }queue, *p_queue;
- p_queue addelement(p_queue ptr, int x);
- p_queue pop(p_queue ptr);
- void print(p_queue ptr);
- int main()
- {
- queue m;
- int x, ich;
- char ch;
- while (1)
- {
- puts("1.Create queue");
- puts("2.Delete element from queue");
- puts("3.Print queue");
- puts("4.Exit.");
- scanf("%d", &ich);
- // проверка на неправильный ввод
- while (ich != 1 && ich != 2 && ich != 3 && ich != 4)
- {
- puts("Error enter. Please, try again.");
- puts("1.Create queue");
- puts("2.Delete element from queue");
- puts("3.Print queue");
- puts("4.Exit.");
- scanf("%d", &ich);
- }
- switch (ich)
- {
- case 1:
- {
- puts("Do you want to enter element?(y-yes, n-no)?");
- getchar();
- ch = getchar();
- while (ch == 'y')
- {
- puts("Enter element:");
- scanf("%d", &x);
- addelement(&m, x);
- puts("Do you want to enter element?(y-yes, n-no)?");
- getchar();
- ch = getchar();
- }
- break;
- }
- case 2:
- {
- pop(&m);
- break;
- }
- case 3:
- {
- print(&m);
- break;
- }
- case 4:
- exit(0);
- }
- }
- system("pause");
- }
- p_queue addelement(p_queue ptr, int x)
- {
- p_node new_node;
- new_node = (p_node)malloc(sizeof(node));
- new_node->value = x;
- new_node->next = NULL;
- if (ptr->count == 0) // если очередь пуста
- {
- ptr->head = new_node; // новый узел голова
- ptr->tail = new_node; // новый узел хвост
- ptr->count++;
- }
- else // если не пустая
- {
- ptr->tail->next = new_node; // хвостовой элемент теперь ссылается на созданный узел
- ptr->tail = new_node; // созданный узел становится хвостом
- ptr->count++;
- }
- return 0;
- }
- p_queue pop(p_queue ptr)
- {
- if (ptr->count == 0)
- {
- puts("We can't delete element from your queue. Queue is empty!");
- goto exit;
- }
- else
- {
- p_queue new_q;
- new_q = (p_queue)malloc(sizeof(queue));
- new_q->head = ptr->head;
- ptr->head = ptr->head->next;
- free(new_q->head);
- ptr->count--;
- puts("Completed!");
- }
- exit: return 0;
- }
- void print(p_queue ptr)
- {
- p_node new_node;
- new_node = ptr->head;
- if (ptr->count == 0)
- {
- puts("We can't print your queue. Queue is empty!");
- return;
- }
- else
- {
- puts("Your queue:");
- while (new_node != NULL)
- {
- printf("%d ", new_node->value);
- new_node = new_node->next;
- }
- puts("");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement