Advertisement
Ilya_konstantinov

18C

Feb 26th, 2024
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.31 KB | Source Code | 0 0
  1. #include <iostream>
  2.  
  3. using std::cin;
  4. using std::cout;
  5.  
  6. struct Node {
  7.   int data;
  8.   Node *next, *prev;
  9. };
  10.  
  11. Node* create(int _data) {
  12.   Node *t = new Node();
  13.   t->data = _data;
  14.   t->prev = t->next = nullptr;
  15.   return t;
  16. }
  17.  
  18. struct LinkedList {
  19.   Node *head, *tail; // Указатель на начало и конец
  20.   int size; // Количество элементов
  21. };
  22.  
  23. // Базовая инициализация
  24. void init(LinkedList &list) {
  25.   list.head = list.tail = nullptr;
  26.   list.size = 0;
  27. }
  28. // Добавить элемент в конец списка
  29. void add_back(LinkedList &list, Node *added) {
  30.   if (list.size) {
  31.     list.tail->next = added;
  32.     added->prev = list.tail;
  33.     list.tail = added;
  34.     list.size++;
  35.   } else {
  36.     list.head = list.tail = added;
  37.     list.size = 1;
  38.   }
  39. }
  40.  
  41. // Вывести все элементы списка
  42. void print(LinkedList &list) {
  43.   Node *cur = list.head;
  44.   // cout << list.size << ": ";
  45.   for(int i = 0; i < list.size; ++i) {
  46.     cout << cur->data << ' ';
  47.     cur = cur->next;
  48.   }
  49.   cout << std::endl;
  50. }
  51.  
  52. #include "func.h"
  53.  
  54. int main() {
  55.   int n, a; cin >> n;
  56.   LinkedList list; init(list);
  57.   for (int i = 0; i < n; ++i) {
  58.     cin >> a;
  59.     add_back(list, create(a));
  60.   }
  61.   int k; cin >> k;
  62.   shift(list, k);
  63.   print(list);
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement