Добавил:
Uliminittion
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
// LAB 4.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//
#include <iostream>
using namespace std;
struct obj
{
int item;
obj *next, *prev;
};
void push_on(obj**, obj**, int);
void go_read(obj*);
void redakt(obj**, obj**, obj**);
int main()
{
setlocale(LC_ALL, "RU");
obj* begin = NULL;
obj* end = NULL;
obj* minuses_begin = NULL;
obj* minuses_end = NULL;
cout << "Введите длину длину очереди" << endl;
int k = 0;
cin >> k;
cout << "Введите очередь положительных и отрицательных чисел" << endl;
int n = 0;
for (int i = 0; i<k;i++)
{
cin >> n;
push_on(&begin, &end, n);
}
go_read(begin);
redakt(&begin, &minuses_begin, &minuses_end);
go_read(begin);
go_read(minuses_begin);
}
void redakt(obj** begin, obj** minuses_begin, obj** minuses_end)
{
obj* q = *begin;
obj* q_next = (*begin)->next;
do
{
if (q->item < 0)
{
push_on(minuses_begin, minuses_end, q->item);
q_next->prev = q->prev;
q = q->prev;
q->next = q_next;
q = q->next;
q_next = q->next;
}
else
{
q = q->next;
q_next = q->next;
}
}
while (q != *begin);
}
void push_on(obj** begin, obj** end, int in)
{
obj* q = new obj();
q->item = in;
if (*begin == NULL)
{
*begin = q;
q->prev = *begin;
q->next = *begin;
}
else if (*begin != NULL && *end == NULL)
{
q->next = *begin;
q->prev = *begin;
*end = q;
(*begin)->prev = *end;
(*begin)->next = *end;
}
else if (*begin != NULL && *end != NULL)
{
q->next = *end;
q->prev = *begin;
*end = q;
(*begin)->next = q;
}
}
void go_read(obj* begin)
{
obj* q = begin;
if (q == NULL)
{
cout << "пусто" << endl;
return;
}
while (q->prev != begin)
{
cout << q->item << " ";
q = q->prev;
}
cout << q->item;
cout << endl;
}
// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
// Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
// Советы по началу работы
// 1. В окне обозревателя решений можно добавлять файлы и управлять ими.
// 2. В окне Team Explorer можно подключиться к системе управления версиями.
// 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
// 4. В окне "Список ошибок" можно просматривать ошибки.
// 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
// 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
Соседние файлы в папке 1 курс различные лабы и их куски. Что-то полезное тут есть