5 / 5 / 1
Регистрация: 14.11.2010
Сообщений: 121
1

Двусвязный список и функции по роботе с ним

07.02.2011, 19:10. Показов 4965. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
нужно создать двусвязный список и реализировать функции по роботе над етим списком.
1. очистить список( я думаю ето нужно делать с помощю memset, или нет?)
2.добавить елементи в конец списка
3.получить указатель на и-тий елемент списка
4. перестановка местами елементов списка
5.вставить елемент в список перед вызначеным елементом
6. печать елементов списка на екран
C++
1
2
3
4
5
6
7
8
        struct meneg
        {
            char name[20};
            int age;
            int salary;
            maneg* next;
            maneg* prev;
};
вот создал список
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2011, 19:10
Ответы с готовыми решениями:

Реализовать двусвязный список и операции работы с ним
Реализовать двусвязный список и операции работы с ним. В списке хранить, что пожелаете. ...

Вычисление функции, двусвязный список
Даны натуральное число n, действительные числа x ...x. Вычислить: (x + x + 2x)(x + x + 2x)......

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

Реализовать указанные функции-члены для пользовательского класса "Кольцевой двусвязный список"
Сообственно сабж. У списка два закрытых поля: tail-это узел следующий за "последним"(условно,ибо...

10
101 / 88 / 7
Регистрация: 17.12.2010
Сообщений: 416
07.02.2011, 19:35 2
посмотри тут
1
5 / 5 / 1
Регистрация: 14.11.2010
Сообщений: 121
07.02.2011, 20:35  [ТС] 3
так там ооп, та й код я не очень понял

Добавлено через 26 минут
может кто-то помочь
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
08.02.2011, 09:05 4
Цитата Сообщение от kaffein
1. очистить список( я думаю ето нужно делать с помощю memset, или нет?)
каждый узел списка создаётся в динамической памяти, так что при очистке списка нужно каждый узел освободить, а в указатель на первый узел записать NULL
0
5 / 5 / 1
Регистрация: 14.11.2010
Сообщений: 121
08.02.2011, 10:51  [ТС] 5
та смисл мне лектор объяснял, я вот функции не могу написать
0
302 / 160 / 62
Регистрация: 27.02.2010
Сообщений: 317
08.02.2011, 11:00 6
C++
1
2
3
4
5
6
7
8
9
10
11
// освобождение памяти (разрушение списка); 
// параметр - указатель на начало строки-списка;
// возвращает значение указателя на пустой список (NULL)
void release(Item*& beg) {
    Item *cur = beg, *tmp = NULL;
    while(cur) {
        tmp = cur->next;
        delete cur;
        cur = tmp;
    }
}
Это для односвязного... может пригодится...
0
5 / 5 / 1
Регистрация: 14.11.2010
Сообщений: 121
08.02.2011, 19:16  [ТС] 7
немножко не то

Добавлено через 6 часов 54 минуты
помогите кто-нибудь
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
09.02.2011, 06:12 8
а видел там вверху поиск ? введи там "двусвязный список"
если нельзя взять готовое, то по крайней мере может помочь в написании своих функций
0
134 / 87 / 22
Регистрация: 28.08.2009
Сообщений: 363
09.02.2011, 06:23 9
вот ссылка, там на любой вкус и цвет
https://www.cyberforum.ru/cpp-... 78335.html
а если вас смущают классы, то в случае элемента списка их можно заменить структурой, а сам класс список можно вообще не создавать, правда это не очень красиво будет
1
5 / 5 / 1
Регистрация: 14.11.2010
Сообщений: 121
09.02.2011, 17:00  [ТС] 10
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
typedef long data;
        typedef struct maneg
        {
            data val;
            maneg* next;
            maneg* prev;
        }list;
        void kill(list* p)
        {
            list* n;
            n = (list*) malloc(sizeof(list));
                memset(n,0,sizeof(list));
        }
 
list* dod(list* first, data x)
        {
            list* nov;
            nov = (list*) malloc(sizeof(list));
            nov->val=x;
            nov->next=first;
            first=nov;
            return first;
        }
list* poc(list* p)
        {
            int i,sum=0;
        printf("nom pos");
            scanf("%i",&i);
            for( list*n=p;n->next;n=n->next)
                sum++;
            if(sum==i)
                return p;
        }
list* per(list*p)
{
    if(p->next)p->next=p->prev;
    p->prev=p->next;
    return p;
}
list* dob(list*vuzel)
{
    list* n;
    n=(list*) malloc(sizeof(list));
 
if(!vuzel) return n;
if(vuzel->next) n->next=vuzel->next;
vuzel->next=n;
return n;
}
void print(list* first)
{
    list*wwe;
    wwe=first;
    while(wwe)
    {
        printf("%i\n",wwe->val);
        wwe=wwe->next;
    
    }
вот я чтото на програмировал,но не знаю как быть с мейном, + хотелось бы заменить data val. на что-то вроде имени или чото другое
0
134 / 87 / 22
Регистрация: 28.08.2009
Сообщений: 363
10.02.2011, 04:04 11
при организации списка нужно завести две глобальных переменных типа твоей структуры:
в одной будет хранится первый элемент списка, в другой последний элемент, ну и для удобства переменную, содержащую количество элементов в списке.

По нормальному при добавлении элемента в список ты должен передавать туда только то что будет хранится у тебя в поле val, то есть сами данные (имя или что ты там хранишь)
а не сразу весь элемент списка(как ты сейчас делаешь) и в функции создать уже сам элемент и в его поле val присвоить эти самые данные, в next и prev адреса соседних элементов

алгоритм добавления в начало списка такой
1) создается новый элемент типа структуры
2) присваиваем ему в поле val данные
3) связываешь его с тем элементом, который сейчас в начале списка (если он не null)
4) перезаписываешь переменную, в которой хранился первый элемент списка
5) увеличиваешь счетчик количества элементов на 1
0
10.02.2011, 04:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.02.2011, 04:04
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru