Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
 Аватар для Greeezly
6 / 6 / 1
Регистрация: 31.08.2012
Сообщений: 230

База данных на основе двусвязного списка

16.10.2013, 10:33. Показов 4599. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Давайте немного поговорим про двусвязный список. Я немного подзапутался, мне нужен трезвый совет.

Если структуры, с которыми мы оперируем имеют тип
C++
1
2
3
4
5
6
7
8
struct auto
{
       int data;
       Auto *next;
       Auto *prev;
       Auto():next(NULL),prev(NULL), d(-332215){}
       Auto(Auto* ptr_n, Auto *ptr_p , int *data): next(ptr_n),prev(ptr_p), d(data) {}
};
тогда мне все понятно и ясно, мы кидаем по 1 значению передаваемой переменной в data. И все работает.

Но! объясните как мне работать со структурами такого типа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct Auto
{
    char Name[25];
    char Brand[25];
    char Color[15];
    char Country[20];
    int Price;
    bool Availability;
    int d;
    Auto *next;
    Auto *prev;
    Auto():next(NULL),prev(NULL), d(-332215){}
    Auto(Auto* ptr_n, Auto *ptr_p , int *data): next(ptr_n),prev(ptr_p), d(data) {}
};
Тут много переменных, а все их передавать в функцию, разумеется, не хочется. Я думал, что можно сделать так: у каждой вновь создаваемой структуры погрузить адреса памяти переменных в массив и отправить функцию, а там уже заполнить и всё. Но у меня технические проблемы это сделать, рук не хватает.. может кто подскажет, или есть какой-то другой способ..
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.10.2013, 10:33
Ответы с готовыми решениями:

Очередь на основе двусвязного списка
имеется собственный класс двусвязного списка с объектами, считываемыми из бинарного файла, как на его основе организовать очередь,...

Дек на основе двусвязного списка
Есть задача: реализовать дек (двустороннюю очередь), на основе двусвязного списка. Использовать контейнеры STL запрещается, список нужно...

Матрица на основе двусвязного списка
Смоделировать новый тип «Матрица» на основе ссылочного типа "Нелинейный двусвязный список". Классы использовать нельзя. Никак не...

4
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
16.10.2013, 12:58
Цитата Сообщение от Greeezly Посмотреть сообщение
может кто подскажет, или есть какой-то другой способ..
А в чем сложность то ?
Пакуйте данные в структуру (класс)
C++
1
2
3
4
5
6
7
8
9
10
struct Data
{
  char Name[25];
  char Brand[25];
  char Color[15];
  char Country[20];
  int Price;
  bool Availability;
  int d; 
};
и уже эту структуру делайте полем struct Auto
C++
1
2
3
4
5
6
7
struct Auto
{
    Data data;
    Auto *next;
    Auto *prev;
..........
};
Или struct Auto вообще сделать шаблонной структурой
1
 Аватар для Greeezly
6 / 6 / 1
Регистрация: 31.08.2012
Сообщений: 230
16.10.2013, 13:51  [ТС]
мм вон оно как, ща попробую
0
 Аватар для Greeezly
6 / 6 / 1
Регистрация: 31.08.2012
Сообщений: 230
11.11.2013, 06:47  [ТС]
А можете привести простенький пример с передачей структуры? У меня г какая-то выходит..
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
11.11.2013, 08:54
Вообще, для решения таких задач и были придуманы шаблонные типы. Если вам кровь-из-носу надо велосипедить, то руками это повторить нетрудно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template <class T>
class LinkedList {
 public:
  void add(const T &value) {
    // код добавления ...
  }
  void erase(const T &value) {
    // код удаления ...
  }
};
 
...
// ну и при создании объекта связного списка специфицируете шаблонный параметр своей структурой:
LinkedList<Auto> autoList;
Auto a;
autoList.add(a);
...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct Auto
{
    char Name[25];
    char Brand[25];
    char Color[15];
    char Country[20];
    int Price;
    bool Availability;
    int d;
    Auto *next;
    Auto *prev;
    Auto():next(NULL),prev(NULL), d(-332215){}
    Auto(Auto* ptr_n, Auto *ptr_p , int *data): next(ptr_n),prev(ptr_p), d(data) {}
};
В принципе, можно и так сделать. Связный список структур, которые сами хранят указатель на следующий и предыдущий объект называется "неинтрузивным связным списком" и такой список сам не создает никаких объектов в памяти, чем очень привлекателен.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.11.2013, 08:54
Помогаю со студенческими работами здесь

Разбитие и сортировка двусвязного списка на основе массива
Здравствуйте, может кто-нибудь помочь реализовать в этом двусвязном списке на основе массива разбитие списка на две части, по указанному...

База данных в Си на основе двусвязного списка
Доброго времени суток! Мне было дано задание: написать базу(см. заголовок) и простое меню с использованием рекурсии с функциями: добавка,...

Динамический класс на основе двусвязного списка
Здравствуйте,вот такие задачи в универе... Кто-то может понять что тут делать? Создать динамический класс Route на основе...

Итератор для двусвязного списка с разными типами данных
Задание было: составить двусвязный список с возможностью добавления,редактирования и удаления элементов списка.Элементы списка разного типа...

Предусмотреть вывод всех данных, поиск элемента двусвязного списка по заданному значению
Help me please!!! В динамической памяти создать двусвязный список из символов латинского алфавита. Предусмотреть вывод всех данных, поиск...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru