Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.61
Basisd
2 / 2 / 0
Регистрация: 09.12.2010
Сообщений: 39
#1

Линейный двусвязный список - C++

11.01.2012, 05:48. Просмотров 2268. Ответов 6
Метки нет (Все метки)

Задали задачу, реализовать линейный двусвязный список, и функцию к нему - удаление узла. Читал литературу, правда в спешке, искал по форуму и просто голова кругом: узел это просто число, или это узел-начало или конец? А ведь в списке двусвязном вроде можно и из середины числа удалять, нет? Я искренне хочу разобраться в этих делах, поэтому не откажусь от кода, с описанием.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2012, 05:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Линейный двусвязный список (C++):

Линейный двусвязный список - C++
Тип элемента списка определен так: struct llist{ int val; llist *next,*pred;}; //Создаётся статический список из 3 эл-тов ...

Линейный Двусвязный список! - C++
Задание:Создайте шаблон функции, которая удаляет из данного списка все элементы, не удовлетворяющие предикату (указатель на функцию,...

Линейный двусвязный список - C++
Список задан структурой struct *node { char info; node *prev; node *next; }; и была введена некоторая последовательность...

Двусвязный линейный список - C++
Дан Двусвязный линейный список. ну например фамилия и имя. как сделать добавление в начало списка? и как объявлять его? помогите

Двусвязный линейный список - C++
Помогите пожалуйста написать эти программы :( Двусвязный линейный список, Быстрая сортировка ,Пузырьковая с...

Двусвязный линейный список - C++
Мне нужно написать класс двусвязный список со всеми базовыми методами. У меня есть несколько проблем: во-первых, удаление из хвоста...

6
lemegeton
2927 / 1356 / 136
Регистрация: 29.11.2010
Сообщений: 2,725
11.01.2012, 09:04 #2
Цитата Сообщение от Basisd Посмотреть сообщение
узел это просто число, или это узел-начало или конец?
Ни то, ни другое. Узел двусвязного списка обычно структура, имеющая указатель на предыдущий узел, указатель на следующий узел и данные, содержащиеся в узле. Данными может быть что угодно -- число, строка, структура...
C
1
2
3
4
5
struct Node {
  Node *prev; // предыдущий узел
  Node *next; // следующий узел
  SomeType data; // данные узла, тип специально не привожу, он может быть любой.
};
Добавлено через 11 минут
Цитата Сообщение от Basisd Посмотреть сообщение
в списке двусвязном вроде можно и из середины числа удалять, нет?
В списке двусвязном узлы удалять можно только. С позиции любой.
Об узле для этого знать нужно что-то. Номер порядковый или данные содержащиеся, например. На узел указатель тоже подойдет.

Добавлено через 1 минуту
Цитата Сообщение от Basisd Посмотреть сообщение
не откажусь от кода, с описанием
На форуме этих кодов с описанием -- немеряно. Ищите и обрящете.

На С разбираетесь или на С++? Имеется в виду использование классов, разумеется.
0
Basisd
2 / 2 / 0
Регистрация: 09.12.2010
Сообщений: 39
18.01.2012, 21:12  [ТС] #3
Цитата Сообщение от lemegeton Посмотреть сообщение
На С разбираетесь или на С++? Имеется в виду использование классов, разумеется.
На С++, в частности VS 2008.

Цитата Сообщение от lemegeton Посмотреть сообщение
В списке двусвязном узлы удалять можно только. С позиции любой.
Об узле для этого знать нужно что-то. Номер порядковый или данные содержащиеся, например. На узел указатель тоже подойдет.
Простыми словами надо ВЫБРАТЬ некий узел, после которого будет удален тот, который мы хотим удалить?

И вот еще вопрос... если мы удалим узел, то что станет со структурой? Можете, например, на конкретном примере показать? Допустим, как выбрать узел (т.е. точку отсчета) я знаю, а вот как удалить следующий, который нам нужно удалить? (Попрошу Вас написать функцию, ибо я не пойму просто)
0
go
Эксперт С++
3586 / 1366 / 129
Регистрация: 16.04.2009
Сообщений: 4,528
18.01.2012, 22:23 #4
Цитата Сообщение от Basisd Посмотреть сообщение
На С++,
Ну можно list использовать http://www.cplusplus.com/reference/stl/list/
Или нельзя?
1
lemegeton
2927 / 1356 / 136
Регистрация: 29.11.2010
Сообщений: 2,725
19.01.2012, 09:02 #5
Цитата Сообщение от Basisd Посмотреть сообщение
И вот еще вопрос... если мы удалим узел, то что станет со структурой?
Какую структуру вы имеете в виду? Структуру связанных между собой нод? Она должна остаться корректной при корректной работе функции удаления.
Цитата Сообщение от Basisd Посмотреть сообщение
Можете, например, на конкретном примере показать? Допустим, как выбрать узел (т.е. точку отсчета) я знаю, а вот как удалить следующий, который нам нужно удалить? (Попрошу Вас написать функцию, ибо я не пойму просто)
Обычно имеют ссылку на тот узел, который собираются удалять.
В общем случае, нода удаляется как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
// допустим, некая нода:
Node *nodeToDelete;
// для поддержания корректности двусвязного списка:
 
// указатель на предыдущую ноду ноды, следующей за удаляемой,
// должен указывать на предыдущий элемент удаляемой ноды
nodeToDelete->next->prev = nodeToDelete->prev;
// указатель на следующую ноду ноды, предшествующей удаляемой,
// должен указывать на следующий элемент удаляемой ноды
nodeToDelete->prev->next = nodeToDelete->next;
delete nodeToDelete; // все, ноду можно удалять
За конкретными примерами -- вэлкам ту поиск. Их на форуме как хорьков.
1
Basisd
2 / 2 / 0
Регистрация: 09.12.2010
Сообщений: 39
19.01.2012, 11:10  [ТС] #6
Цитата Сообщение от lemegeton Посмотреть сообщение
За конкретными примерами -- вэлкам ту поиск. Их на форуме как хорьков.
нет, нет, нет, я не код имел в виду, а... схему что ли, или картинку)
0
lemegeton
2927 / 1356 / 136
Регистрация: 29.11.2010
Сообщений: 2,725
19.01.2012, 11:55 #7
Вот картинка на алголисте. Из описания двусвязного списка в картинках.
1
19.01.2012, 11:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2012, 11:55
Привет! Вот еще темы с ответами:

Двусвязный линейный список - C++
Здравствуйте. Помогите пожалуйста в написании программы: Реализовать класс на основе двусвязного линейного списока Реализовать в нем...

Сформировать линейный двусвязный список - C++
Сформировать линейный двусвязный список следующим образом: генерируется два случайных числа, если такие числа уже есть в списке, то они из...

Линейный двусвязный список для хранения записей - C++
Добрый вечер. Нужна блок-схема к данному коду #include "stdafx.h" #include <iostream> //директива для ввода вывода #include...

Вставить в линейный список перед элементом с заданным значением другой линейный список - C++
Как можно вставить в линейный список перед элементом с заданным значением другой линейный список? Как один элемент вставлять, я знаю, а вот...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.