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

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

14.04.2014, 12:01. Показов 3880. Ответов 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,532
Записей в блоге: 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,532
Записей в блоге: 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,532
Записей в блоге: 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,532
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru