Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- //queue element с ошибкой в названии, медведкова привыкла писать так
- struct QEUE_ELENENT
- {
- int info; //информация
- QEUE_ELENENT* next; //указатель на следующий элемент
- };
- //класс очереди
- class Qeue
- {
- QEUE_ELENENT* head; //указатель на начало нашего списка
- //указатель на конец можно, но мы пишем простейший код на троечку
- public:
- Qeue() : head(NULL){}; //конструктор
- //добавление в конец
- void push(int input)
- {
- QEUE_ELENENT* temp = new QEUE_ELENENT;
- temp->next = NULL;
- temp->info = input;
- if (head == NULL)
- {
- head = temp;
- return;
- }
- if (head->next == NULL)
- {
- head->next = temp;
- return;
- }
- QEUE_ELENENT* t = head;
- while (t->next != NULL)
- {
- t = t->next;
- }
- t->next = temp;
- }
- //удаление первого элемента
- void pop()
- {
- if (head->next == NULL)
- head = NULL;
- else
- head = head->next;
- }
- //вывод всех элементов
- void print()
- {
- QEUE_ELENENT* t = head;
- while (t != NULL)
- {
- cout << t->info << endl;
- t = t->next;
- }
- }
- //заполнение с файла
- void fillFromFile()
- {
- ifstream f("file.txt");
- int temp;
- while (!f.eof())
- {
- f >> temp;
- this->push(temp);
- //cout << temp << " ";
- }
- f.close();
- }
- //создание нового списка, каждый элемент которого - сумма соседей
- void createNewQueu(Qeue* &newQeue)
- {
- QEUE_ELENENT* temp = head;
- QEUE_ELENENT* prev = new QEUE_ELENENT;
- if (temp->next != NULL)
- newQeue->push(temp->next->info);
- while (temp->next->next != NULL)
- {
- int result = temp->info + temp->next->next->info;
- newQeue->push(result);
- prev = temp;
- temp = temp->next;
- }
- newQeue->push(prev->info + temp->next->info);
- newQeue->push(temp->info);
- }
- //пуста ли очередь
- bool empty()
- {
- return head == NULL;
- }
- };
- //генерируем в файле
- void createFile(int size)
- {
- ofstream f("file.txt");
- for (int i = 1; i < size; i++)
- f << rand() % 10 + 1 << endl;
- f << rand() % 8 + 3;
- f.close();
- }
- int main()
- {
- setlocale(0, "rus");
- Qeue *q = new Qeue, //из файла
- *newQ = new Qeue; //соседние
- int size;
- cout << "Количество чисел в файле: "; cin >> size;
- cout << endl;
- createFile(size);
- cout << "Список из файла: " << endl;
- q->fillFromFile();
- q->print();
- cout << "Список - сумма соседних: " << endl;
- q->createNewQueu(newQ);
- newQ->print();
- }
Advertisement
Add Comment
Please, Sign In to add comment