Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Greeezly
6 / 6 / 1
Регистрация: 31.08.2012
Сообщений: 230
#1

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

16.10.2013, 10:33. Просмотров 773. Ответов 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) {}
};
Тут много переменных, а все их передавать в функцию, разумеется, не хочется. Я думал, что можно сделать так: у каждой вновь создаваемой структуры погрузить адреса памяти переменных в массив и отправить функцию, а там уже заполнить и всё. Но у меня технические проблемы это сделать, рук не хватает.. может кто подскажет, или есть какой-то другой способ..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2013, 10:33     База данных на основе двусвязного списка
Посмотрите здесь:

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

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

База данных на основе очереди - C++
Доброго времени суток! Я писал курсач (1 курс) и была поставлена задача написать типа БД ( динамическую структуру крч) мне нужно было...

Динамическая структура данных в форме односвязного списка на основе указателей - C++
Не могли вы написать простенький пример программы на языке С++, Delphi или даже псевдокоде, которая реализует алгоритмы основных операций...

База данных в виде упорядоченного списка - C++
Задание звучит так: составить базу данных в виде списка(в нем предусмотреть возможность сортировки по полям,выбора элемента,дополнения...

Напишите класс «Стек» для целочисленных данных на основе односвязного списка - C++
Напишите класс «Стек» для целочисленных данных на основе односвязного списка. Предусмотрите функции добавления и извлечения элемента,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrCold
854 / 752 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
16.10.2013, 12:58     База данных на основе двусвязного списка #2
Цитата Сообщение от 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 вообще сделать шаблонной структурой
Greeezly
6 / 6 / 1
Регистрация: 31.08.2012
Сообщений: 230
16.10.2013, 13:51  [ТС]     База данных на основе двусвязного списка #3
мм вон оно как, ща попробую
Greeezly
6 / 6 / 1
Регистрация: 31.08.2012
Сообщений: 230
11.11.2013, 06:47  [ТС]     База данных на основе двусвязного списка #4
А можете привести простенький пример с передачей структуры? У меня г какая-то выходит..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2013, 08:54     База данных на основе двусвязного списка
Еще ссылки по теме:

Пример использование стека на основе массива и на основе двунаправленного списка - C++
здраствуте, можете привести примеры использывания стека на основе массива(1 код) и стек на основе двунаправленного списка(2...

Создание двусвязного списка - C++
Не понимаю как его создать. И как сделать стандартные операции над списком(удаление, добавление и т.д). Сколько сайтов переползал, все...

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

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

Реверс двусвязного списка - C++
Столкнулся с задачей написать функцию реверса двусвязного списка. Часа 3 сушил себе мозг с копиями указателей, получилось что надо хранить...

Добавление в конец двусвязного списка - C++
Помогите найти ошибку в коде: не работает добавление в конец. Список формируется добавлением в начало! Функция добавления: ...


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

Или воспользуйтесь поиском по форуму:
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
11.11.2013, 08:54     База данных на основе двусвязного списка #5
Вообще, для решения таких задач и были придуманы шаблонные типы. Если вам кровь-из-носу надо велосипедить, то руками это повторить нетрудно:
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) {}
};
В принципе, можно и так сделать. Связный список структур, которые сами хранят указатель на следующий и предыдущий объект называется "неинтрузивным связным списком" и такой список сам не создает никаких объектов в памяти, чем очень привлекателен.
Yandex
Объявления
11.11.2013, 08:54     База данных на основе двусвязного списка
Ответ Создать тему
Опции темы

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