Advertisement
Ne-Biolog

Untitled

Apr 20th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. //
  2. // main.c
  3. // lab6
  4. //
  5. // Created by Денис Домашевич on 18.04.2018.
  6. // Copyright © 2018 Денис Домашевич. All rights reserved.
  7. //
  8.  
  9. #include <mm_malloc.h>
  10. #include <stdbool.h>
  11. #include <stdio.h>
  12.  
  13. int getInt() {
  14. int res;
  15. while(true) {
  16. if(scanf("%d", &res) && getchar() == '\n') {
  17. return res;
  18. } else {
  19. printf("Try again\n");
  20. while(getchar() != '\n') {}
  21. }
  22. }
  23. }
  24. typedef struct QueueNode {
  25. int data;
  26. struct QueueNode *next;
  27. } QueueNode;
  28.  
  29. struct Queue {
  30. size_t len;
  31. QueueNode *top;
  32. };
  33.  
  34. typedef struct Queue Queue;
  35.  
  36. Queue *createQueue() {
  37. Queue *q = (Queue *)malloc(sizeof(Queue));
  38. q->len = 0;
  39. q->top = NULL;
  40. return q;
  41. }
  42.  
  43. void printQueue(Queue *queue) {
  44. QueueNode * currNode = queue->top;
  45. while(currNode != NULL) {
  46. printf("%d ", currNode->data);
  47. currNode = currNode->next;
  48. }
  49. }
  50.  
  51. void queuePush(Queue *queue, int data) {
  52. QueueNode * newNode = (QueueNode *)malloc(sizeof(QueueNode));
  53. newNode->data = data;
  54. QueueNode * currNode = queue->top;
  55. if(currNode == NULL) {
  56. currNode = newNode;
  57. } else {
  58. while(currNode->next != NULL) {
  59. currNode = currNode->next;
  60. }
  61. currNode->next = newNode;
  62. }
  63. queue->len++;
  64. }
  65.  
  66. void queuePop(Queue *queue) {
  67. QueueNode *oldTop = queue->top;
  68. queue->top = oldTop->next;
  69. queue->len--;
  70. free(oldTop);
  71. }
  72.  
  73. int getTop(Queue *queue) {
  74. return queue->top->data;
  75. }
  76.  
  77. void printCommands() {
  78. printf("1: Add element in queue\n");
  79. printf("2: Stop\n");
  80. }
  81.  
  82. void addElments(Queue *q) {
  83. while(true) {
  84. printCommands();
  85. int type = getInt();
  86. if(type == 1) {
  87. int newElement = getInt();
  88. queuePush(q, newElement);
  89. } else if(type == 2) {
  90. break;
  91. } else {
  92. printf("Try again\n");
  93. }
  94. }
  95. }
  96.  
  97. int main() {
  98.  
  99. Queue *q = createQueue();
  100. addElments(q);
  101.  
  102. printQueue(q);
  103.  
  104. return 0;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement