Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2020, 14:01   #1
vavucho
Пользователь
 
Регистрация: 12.03.2020
Сообщений: 12
По умолчанию задача со списками,не могу понять что делаю не так в двунаправленном списке выводит не то что нужно

#include <iostream>
using namespace std;
struct spisok {
double data;
spisok* next;
};
struct kekw {
int info;
kekw* next;
kekw* prev;
};
kekw* first = 0;
kekw* last = 0;
spisok* make_list(int n) {
spisok* beg;
spisok* p, * r;
beg = new(spisok);
cout << "Голова\n";
cin >> beg->data;
beg->next = 0;
p = beg;
for (int i = 0; i < n - 1; i++) {
r = new(spisok);
cout << "Введите элемент массива\n";
cin >> r->data;
r->next = 0;
p->next = r;
p = r;
}
return beg;
}
void print_list(spisok* beg)
{
spisok* p = beg;//начало списка
while (p != 0)
{
cout << p->data << "\t";
p = p->next;//переход к следующему элементу
}
}
spisok* add_point(spisok* beg)
{
spisok* p = beg;//встали на первый элемент
for (int i = 0; p != 0; i++) {
if (p->data < 0) {
spisok* New = new(spisok);//создали новый элемент
New->data = 0;
New->next = p->next;
p->next = New;
}
p = p->next;
}
return beg;
}
void clear(spisok* beg) {
spisok* p = beg;//начало списка
spisok* r;
while (p != 0)
{
r = p->next;
delete p;
p = r;//переход к следующему элементу
}
}
kekw* make_point()
//создание одного элемента
{
kekw* p = new(kekw);
p->next = 0; p->prev = 0;//обнуляем указатели
int s;
cout << "Введите элемент списка:";
cin >> s;
p->info = s;//выделение памяти
return p;
}
kekw* make_list1(int k)
//создание списка
{
kekw* p, * head;
head = make_point();//создаем первый элемент
for (int i = 1; i < k; i++)
{
p = make_point();//создаем один элемент
//добавление элемента в начало списка
p->next = head;//связываем р с первым элементом
head->prev = p;//связываем первый элемент с p
head = p;// p становится первым элементом списка
}
return head;
}
void del(kekw* head) {
kekw* p = head;
while (p != 0 && p->info % 2 != 0)
p = p->next;
if (p == NULL)
return;
kekw* prev = p->prev;
kekw* next = p->next;
if (prev != NULL)
prev->next = next;
if (next != NULL)
next->prev = prev;
delete p;
}
void print(kekw* head)
{
kekw* p = head;//начало списка
while (p != 0)
{
cout << p->info << "\t";
p = p->next;//переход к следующему элементу
}
}
void clear1(kekw* head) {
kekw* p = head;//начало списка
kekw* r;
while (p != 0)
{
r = p->next;
delete p;
p = r;//переход к следующему элементу
}
}
int main() {
setlocale(LC_ALL, "rus");
int n, k, f;
do
{
cout << "1.Односвязный список(после каждого элемента <0 добавить 0)\n";
cout << "2.Двусвязный список(удалить первый четный элемент в списке)\n";
cout << "3. Выход\n";
cin >> f;
switch (f)
{
case 1:
{cout << "Введите размер списка: ";
cin >> n;
spisok* beg = make_list(n);
add_point(beg);
print_list(beg);
clear(beg); }
cout << "\n\n";
break;
case 2:
{cout << "Введите размер списка: ";
cin >> k;
kekw* head = make_list1(k);
del(head);
print(head);
clear1(head); }
cout << "\n\n";
break;
}
} while (f != 3);//выход
system("pause");
}
vavucho вне форума Ответить с цитированием
Старый 24.03.2020, 14:02   #2
vavucho
Пользователь
 
Регистрация: 12.03.2020
Сообщений: 12
По умолчанию

вот вывод
Изображения
Тип файла: png 1.png (1.6 Кб, 5 просмотров)
vavucho вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление повторяющихся элементов в двунаправленном списке Заяц90 Общие вопросы C/C++ 0 19.12.2018 18:39
Удаление элемента в двунаправленном списке из начала Grai Общие вопросы C/C++ 17 03.07.2015 16:03
Процедура удаления в двунаправленном списке mishammm Помощь студентам 1 04.05.2014 07:05
не могу понять,что нужно дописать ТатьянаП Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 18.10.2010 15:43
IBExpert, не могу понять что делаю не так! в чём проблема.... katia0017 SQL, базы данных 10 15.01.2010 18:33