Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 16
1

Динамическая структура (двусвязный список)

07.01.2016, 18:47. Показов 4692. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Заранее прошу прощения, если вопрос уже неоднократно поднимался на форуме. В голове такая каша по структурам динамическим, что нет времени освоить материал до завтра.

Итак, задача такова:
Создай динамически связанную структуру - двусвязный список. Для создания структуры и работы функций с ней понадобятся:
1.структура list, содержащая начало и конец структуры
C++
1
2
Node * first;
Node * last;
2.Элемент списка будет типа Node и будет содержать в себе данные о предыдущем и следующем элементах:
C++
1
2
Node * next; 
Node * prev;
Написать функции добавления элемента в конец, в начало, удаление с конца, удаление с начала, выписать весь список.
Не прошу писать все функции, только одну или две, чтобы я понял принцип.

Благодарю!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.01.2016, 18:47
Ответы с готовыми решениями:

Динамическая структура — двусвязный список
Помогите пожалуйста срочно. Сам вообще не могу разобраться( Динамическая структура — двусвязный...

Динамическая структура - двунаправленный список
Для функции структуру данных можно выбрать произвольно. LMove (H, T, curl, cur2), переставляющую...

Иерархия классов "Структура - Список - Кольцевой Двусвязный список"
Неделю назад получил задание и срок выполнения до конца мая. Разработка иерархии классов....

Переделать двусвязный список в двусвязный кольцевой
Здравствуйте, у меня єсть двусвязный список однако он не кольцевой! как это запрограммировать? и...

3
505 / 317 / 236
Регистрация: 18.02.2013
Сообщений: 754
07.01.2016, 18:58 2
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
void add (list **b, list **e,int choise)
{
    list *i=new list ;
    i->inf=/*инициализация информационной части*/;
    
    if (*b==NULL)
    {
        i->pre=i->next=NULL;
        *b=*e=i;
    }
    else 
    {
        switch(choise)
        {
               case 1://добавляем в конец очереди
            i->next=NULL;
            i->pre=*e;
            (*e)->next=i;
            (*e)=i;
            break;
        case 2://добавляем в начало очереди
            i->next=*b;
            i->pre=NULL;
            (*b)->pre=i;
            (*b)=i;
             break;
        }
        
    }   
}

вызов
C++
1
add(&b,&e);
1
 Аватар для yrceus
88 / 88 / 80
Регистрация: 25.08.2013
Сообщений: 337
07.01.2016, 21:03 3
Чуть полнее
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
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
using namespace std;
struct Node { 
    int x;
    Node *next;
    Node *prev;
};
struct list { 
    Node *first;
    Node *last;
} rost{ NULL, NULL };
short ch;    // для хронологии где и что делали
//-------------------------------------------------------
void addfir()// добавить в начало
{   
    Node *el = new Node;
    *el = { ++ch, NULL, NULL };
    if (rost.first) {
        el->next = rost.first; 
        rost.first->prev = el;
        rost.first = el;
    }
    else
        rost.last = rost.first = el;
}
//-------------------------------------------------------
void addlas()// добавить в конец
{
    Node *el = new Node;
    *el = { ++ch, NULL, NULL };
    if (rost.last) {
        el->prev = rost.last;
        rost.last->next = el;
        rost.last = el;
    }
    else
        rost.last = rost.first = el;
}
//-------------------------------------------------------
void delfir()// удалить в начале
{
    if (rost.first) {
        Node *time = rost.first;
        rost.first = rost.first->next;
        rost.first->prev = NULL;
        delete time;
    }
    else 
        cout << "Null!\n";
}
//-------------------------------------------------------
void dellas()// удалить в конце
{
    if (rost.last) {
        Node *time = rost.last;
        rost.last = rost.last->prev;
        rost.last->next = NULL;
        delete time;
    }
    else
        cout << "Null!\n";
}
//-------------------------------------------------------
void show()// показать
{
    if (rost.first) {
        Node *time = rost.first;
        while (time) {
            cout << time->x << endl;
            time = time->next;
        } 
    }
    else
        cout << "Null!\n";
}
//-------------------------------------------------------
int main()
{
    for (;;) {
        char sym;
        cout << "Add first - q\nAdd last - a\nDel first - z\nDel last - w\nShow - s\n";
        cin >> sym;
        switch (sym) {
        case 'q': addfir(); break;
        case 'a': addlas(); break;
        case 'z': delfir(); break;
        case 'w': dellas(); break;
        case 's': show(); break;
        default: continue;
        }
    }   
    return 0;
}
2
 Аватар для SergioO
260 / 208 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
07.01.2016, 22:38 4
Еще полнее
C++
1
2
3
4
5
6
std::list L;
L.push_front(element);
L.pop_front(element);
L.insert(pos, element);
и тд и тп тут вам и сортировка и еще много чего
надо лишь заглянуть в <list>
Список представляет собой контейнер, который поддерживает быструю вставку и удаление элементов из любой позиции в контейнере. Он реализован в виде двусвязного списка.
2
07.01.2016, 22:38
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.01.2016, 22:38
Помогаю со студенческими работами здесь

Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список
спасайте Сформировать список из 10 работников, используя динамическую структуру данных...

Двусвязный список (в конец двусвязного списка добавить другой список)
здравствуйте, подскажите пожалуйста, как в конец двусвязного списка добавить другой список?

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

Заменить массив структур на односвязный список, и на двусвязный список
Взять текст задания и заменить массив структур на односвязный список, и на двусвязный список ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru