Advertisement
Nikmosi

sd pz 2

Apr 7th, 2021 (edited)
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include <cstddef>
  2. #include <cstdio>
  3.  
  4. struct queue
  5. {
  6.    int data = 0;
  7.    queue *prev = NULL, *next = NULL;
  8. };
  9.  
  10. // Загружает очередь из файла n
  11. void input(queue **q, const char *n);
  12.  
  13. // Добавляет элемент i в очередь q
  14. void enqueue(queue *q, int &i);
  15.  
  16. // Удалает первый элемент и возвращает его значание
  17. int dequeue(queue *q);
  18.  
  19. int main()
  20. {
  21.    queue *q = NULL;
  22.    input(&q, "in.txt");
  23.  
  24.    return 0;
  25. }
  26.  
  27. void input(queue **q, const char *n)
  28. {
  29.    *q = new queue;
  30.    (*q)->prev = (*q)->next = *q;
  31.  
  32.    FILE *f = NULL;
  33.    fopen_s(&f, n, "r");
  34.    if(f == NULL) return;
  35.  
  36.    int i = 0;
  37.    fscanf_s(f, "%d", &(*q)->data);
  38.    while(fscanf_s(f, "%d", &i) != EOF)
  39.       enqueue(*q, i);
  40. }
  41.  
  42. void enqueue(queue *q, int &i)
  43. {
  44.    queue *n = new queue;
  45.  
  46.    n->data = i;
  47.    n->prev = q->prev;
  48.    q->prev->next = n;
  49.    n->next = q;
  50.    q->prev = n;
  51. }
  52.  
  53. int dequeue(queue *q)
  54. {
  55.    const int s = q->data;
  56.  
  57.    q->next->prev = q->prev;
  58.    q->prev->next = q->next;
  59.    delete q;
  60.  
  61.    return s;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement