Advertisement
VladimirKostovsky

Лаба 2. Реализация изначальной задумки

Mar 21st, 2022 (edited)
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.98 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. using namespace std;
  5.     ifstream F;
  6.     int number;
  7. struct Queue { int x; Queue *Tail, *Head, *Next;}; // объявление структуры
  8. void Push(int x, Queue *&MyQueue){  // добавление элемента в очередь
  9.     Queue *element = new Queue;
  10.     element->x = x;
  11.     element->Tail = NULL;
  12.     if (MyQueue->Head == NULL)
  13.         MyQueue->Head = MyQueue->Next = element;
  14.     else{
  15.         (MyQueue->Next)->Tail = element;
  16.         MyQueue->Next = element;
  17.     }
  18. }
  19. void Show(Queue *MyQueue){ // функция вывода списка в файл
  20.  
  21.     ofstream fout ("output.txt", ios_base::app);
  22.     Queue *temp = MyQueue->Head;
  23.     while (temp != NULL){
  24.         fout << temp->x << " ";
  25.         temp = temp->Tail;
  26.     }
  27.         fout << endl;
  28. }
  29. void ClearQueue(Queue *MyQueue){ // функция удаления из памяти
  30.     while (MyQueue->Head != NULL){
  31.  
  32.         Queue *temp = MyQueue->Head->Tail;
  33.         delete MyQueue->Head;
  34.         MyQueue->Head = temp;
  35.     }
  36. }
  37. void Pop(Queue *MyQueue){ // функция удаления элемента  
  38.     if (MyQueue->Head != NULL){
  39.         Queue *temp = MyQueue->Head->Tail;
  40.         MyQueue->Head = temp;
  41.     }
  42.  
  43. }
  44. void CreateQueue(Queue *MyQueue){ // ввод из файла
  45.     ifstream fin("input.txt");
  46.     Queue *element = new Queue;
  47.     while (!fin.eof()){
  48.         fin >> number;
  49.         Push(number, MyQueue);
  50.     }
  51. }
  52. void DeleteNegative(Queue *MyQueue){ // удаление определенных элементов
  53.     Queue *temp = MyQueue->Head;
  54.     while (temp != NULL){
  55.         temp = temp->Tail;
  56.     }
  57.     temp = MyQueue->Head;
  58.     Pop(MyQueue);
  59. }
  60. void AddNegative (int i, Queue *MyQueue) { // добавление определенных элементов
  61.     int count=0;
  62.     Queue *temp = MyQueue->Head;
  63.     while (temp != NULL){
  64.         count++;
  65.         temp = temp->Tail;
  66.     }
  67.     temp = MyQueue->Head;
  68.     Push(i, MyQueue);
  69.     temp = temp->Tail;
  70. }
  71. void Checkman(Queue *MyQueue){ // проверка на пустоту
  72.     int count=0;
  73.     Queue *temp = MyQueue->Head;
  74.     while (temp != NULL){
  75.         count++;
  76.         temp = temp->Tail;
  77.     }
  78.     temp = MyQueue->Head;
  79.  
  80.     for (int j = 0; j < count; j++){
  81.     if (temp->x = 0) {continue;}
  82.     else {cout << "Не пуст!" << endl;break;}
  83.     }
  84. }
  85. int main(){
  86.     Queue *MyQueue = new Queue;
  87.     CreateQueue(MyQueue);
  88.     cout << "Проверили на пустоту" << endl;
  89.     Checkman(MyQueue);
  90.     cout << "Создали список" << endl;
  91.     Show(MyQueue);
  92.     DeleteNegative(MyQueue);
  93.     cout << "Удалили элемент" << endl;  
  94.     Show(MyQueue);
  95.     AddNegative(42, MyQueue);
  96.     cout << "Добавили элемент" << endl;
  97.     Show(MyQueue);
  98.     ClearQueue(MyQueue);
  99.     delete MyQueue->Head;
  100.     delete MyQueue;
  101.     cout << "Память очищена" << endl;
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement