Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/19: Рейтинг темы: голосов - 19, средняя оценка - 4.84
0 / 1 / 4
Регистрация: 20.10.2013
Сообщений: 270

Удалить из односвязного линейного списка определенный узел

14.04.2014, 12:01. Показов 3908. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Построить односвязный список из входной последовательности целых чисел. Написать программу, которая удаляет из линейного списка входной последовательности целых чисел: Узел, содержащий число, равное числу предыдущего узла списка.

Выручайте, весь поиск перерыл, ничего толком не нашел)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.04.2014, 12:01
Ответы с готовыми решениями:

Не работает метод сортировки односвязного списка, оформленного классом(узел - структура)
Повторно прошу помощи, так как уже курсовая горит, а идей для решения задачи нету. Помогите, пожалуйста. Надо переделать(написать)...

Гайд по сортировке односвязного линейного списка
Посоветуйте пожалуйста толковый гайд по сортировке. Уже столько всего перерыл, прочитал, но понять алгоритм не получается Добавлено...

Ввод вложенного односвязного линейного списка
Помогите, пожалуйста разобраться с вводом вложенного односвязного линейного списка. Вот хотя бы на таком примере структур: struct...

12
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
14.04.2014, 12:48
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream>
#include <ctime>
#include <cstdlib>
struct item{
    int value;
    item* next;
};
struct list{
    item* start;
    item* end;
};
void init(list& tlist){
    tlist.start=tlist.end=NULL;
}
void push_back_Item(list& tlist, int value){
    if (tlist.end){
        tlist.end->next=new item;
        tlist.end=tlist.end->next;
        tlist.end->next=NULL;
        tlist.end->value=value;
    }
    else{
        tlist.start=tlist.end=new item;  
        tlist.end->next=NULL;
        tlist.end->value=value;
    }
}
void output_list(const list& tlist){
    for(item* i=tlist.start; i!=NULL; i=i->next)
        std::cout<<(i->value)<<", ";
    std::cout<<std::endl;
}
void process_list(list& tlist){
    if (!tlist.start) return;
    item* i=tlist.start;
    while(i->next){
        if (i->value == i->next->value){
            item* tmp=i->next->next;
            delete i->next;
            i->next=tmp; 
            if (!tmp){  
                tlist.end=i;
                return;
            }
        }
        i=i->next;   
        tlist.end=i;
    }
}
void clear_list(list& tlist){   
    item* i=tlist.start;
    while(i){   
        item* tmp=i->next;
        delete i;
        i=tmp;
    }
    tlist.start=tlist.end=NULL;
}
int main(){
    int size;
    srand(time(NULL));
    std::cout<<"Input sizeof list: ";
    std::cin>>size;
    int pre_value;
    list data;
    init(data);
    for (int i=0; i<size; i++){
       if ((i&1)==0)
           pre_value=i; 
       push_back_Item(data, pre_value);
    }
    std::cout<<"created list: ";
    output_list(data);
    std::cout<<"processed list: ";
    process_list(data);
    output_list(data);
    clear_list(data);
    return 0;
}
0
0 / 1 / 4
Регистрация: 20.10.2013
Сообщений: 270
14.04.2014, 18:29  [ТС]
не совсем понял работу вашей программы
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
14.04.2014, 21:30

Не по теме:

VitekSR, не выкай мне, ннна

Цитата Сообщение от VitekSR Посмотреть сообщение
не совсем понял работу вашей программы
какая функция непонятна? На какой ты стадии изучения языка Си?
Я писал как можно проще, чтобы даже те, кто не знает классов и шаблонов и вообще элементов Си++ (то есть знающие лишь основы Си) поняли.
0
0 / 1 / 4
Регистрация: 20.10.2013
Сообщений: 270
17.04.2014, 19:22  [ТС]
Kuzia domovenok, ввожу числа, далее ничего не выводится. Что делаю не то?
Миниатюры
Удалить из односвязного линейного списка определенный узел  
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
17.04.2014, 19:50
VitekSR,
Input sizeof list - означает введите размер списка.
Вы вводите 2 (считывается первое число). Получаете дав ноля, как задумал Kuzia domovenok, .
В ответе получаете один 0.

Введите 8. Увидите разницу.
1
0 / 1 / 4
Регистрация: 20.10.2013
Сообщений: 270
17.04.2014, 20:00  [ТС]
IrineK, спасибо. Понял уже. А возможно сделать так, чтобы сам вводил числа, а не размер списка?
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
17.04.2014, 20:04
Цитата Сообщение от VitekSR Посмотреть сообщение
А возможно сделать так
Вы же погромист - все в ваших руках )
0
0 / 1 / 4
Регистрация: 20.10.2013
Сообщений: 270
17.04.2014, 20:22  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <iostream>
#include <ctime>
#include <cstdlib>
struct item{
    int value; //информационное поле
    item* next; //указатель на след.элемент
};
struct list{ //не совсем понятно зачем вторая структура с другим именем ??
    item* start; //указатель на начало элемента
    item* end; //указатель на конец элемента
};
void init(list& tlist){ // ??
    tlist.start=tlist.end=NULL; //пока не достигнут конец ??
}
void push_back_Item(list& tlist, int value){ //функция обработки списка
    if (tlist.end){ //если..
        tlist.end->next=new item; //переход к след.элементу и создаем новую переменную
        tlist.end=tlist.end->next; 
        tlist.end->next=NULL; //пока не достигнут конец
        tlist.end->value=value;
    }
    else{ //иначе
        tlist.start=tlist.end=new item;   //
        tlist.end->next=NULL; //
        tlist.end->value=value; //
    }
}
void output_list(const list& tlist){ //функция формирования односвязного списка
    for(item* i=tlist.start; i!=NULL; i=i->next) //
        std::cout<<(i->value)<<", "; //
    std::cout<<std::endl; //вывод
}
void process_list(list& tlist){ //
    if (!tlist.start) return; //
    item* i=tlist.start; //
    while(i->next){ //
        if (i->value == i->next->value){ //
            item* tmp=i->next->next; //
            delete i->next; //
            i->next=tmp; //
            if (!tmp){  //
                tlist.end=i; //
                return; //
            }
        }
        i=i->next;   //
        tlist.end=i; //
    }
}
void clear_list(list& tlist){   //удаление элемента из списка
    item* i=tlist.start; // сохранить адрес следующего элемента
    while(i){   //пока i ??
        item* tmp=i->next; // записать адрес следующего за удаляемым элементом
        delete i; //удалить
        i=tmp; // ??
    }
    tlist.start=tlist.end=NULL; // что то типо "пока не достигнут конец"?
}
int main(){
    int size;
    srand(time(NULL));
    std::cout<<"Input sizeof list: ";
    std::cin>>size;
    int pre_value;
    list data; // ??
    init(data); // ??
    for (int i=0; i<size; i++){ //для чего этот цикл ??
       if ((i&1)==0) // ??
           pre_value=i;  // ??
       push_back_Item(data, pre_value); // ??
    }
    std::cout<<"created list: ";
    output_list(data); // ??
    std::cout<<"processed list: ";
    process_list(data); //??
    output_list(data); //??
    clear_list(data); // ??
    system("pause");
    return 0;
}
Ладно, помогите тогда разобраться с каждой строчкой программы. Я какие то сам подписал, какие то вообще не знаю, для чего нужны. Проверьте, пожалуйста, те, которые я сам подписал, правильно ли все? И помогите дополнить комментарии
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
18.04.2014, 12:19
Цитата Сообщение от VitekSR Посмотреть сообщение
for (int i=0; i<size; i++){ //для чего этот цикл ?? if ((i&1)==0) // ?? pre_value=i; // ?? push_back_Item(data, pre_value); // ?? }
это и есть заполнение списка по порядку.
в качестве чисел вводятся чётные индексы цикла ( if ((i&1)==0) )
В принципе можно вводить не индексы ( pre_value=i ),
а считывать с клавы числа ( cin>>pre_value ),
0
0 / 1 / 4
Регистрация: 20.10.2013
Сообщений: 270
25.04.2014, 22:33  [ТС]
Ошибка 2 error LNK1120: 1 неразрешенных внешних элементов C:\Users\Виктор\documents\visual studio 2010\Projects\щлтщ\Debug\щлтщ.exe 1
Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в функции ___tmainCRTStartup C:\Users\Виктор\documents\visual studio 2010\Projects\щлтщ\щлтщ\MSVCRTD.lib(crte xew.obj)
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
25.04.2014, 22:55
VitekSR, проект по-нормальному создавай. Начни с пустого проекта! Ты хотя бы Hello world писал в Студии? Я бы на твоём месте бросил заниматься всякими списками и сел бы за основы. Где ты вообще взял это задание? Любая книжка по С++ начинается с более простых вещей! Брось списки, короче!

Миниатюры
Удалить из односвязного линейного списка определенный узел  
0
0 / 1 / 4
Регистрация: 20.10.2013
Сообщений: 270
26.04.2014, 00:38  [ТС]
лабу задали в инсте. я не виноват, что такие сложные задания
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.04.2014, 00:38
Помогаю со студенческими работами здесь

Проход по элементам односвязного линейного списка
Допустим у меня существует класс линейного односвязного списка. Надо пройти по его элементам и присвоить каждому соответствующее...

Найти наименьший элемент односвязного линейного списка
Найти наименьший элемент односвязного линейного списка. Сценарий: обходя список найти минимальное значение поля Data. Прошу помогите, ума...

Задать двумерный массив с помощью линейного односвязного списка
Помогите решить задачу: &quot;Задать двумерный массив с помощью линейного односвязного списка&quot;. Может кто знает, буду очень благодарен!

Написать программу, которая удаляет из линейного списка входной последовательности целых чисел узел
#include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; struct ult { int x; ult *pravo; };

Спроектировать шаблон класса spisok для реализации односвязного линейного списка. Не работает сортировка
Здравствуйте! Очень нужна помощь в реализации программы. Задание: Спроектировать шаблон класса spisok для реализации односвязного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru