0 / 0 / 0
Регистрация: 11.01.2016
Сообщений: 10
1

Функция удаления из двусвязного списка

18.10.2016, 01:17. Показов 878. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создал двусвязный список на основе класса, работают ввод элементов в список и вывод всего списка. Помогите пожалуйста с функцией удаления элемента из списка и с функцией для доступа к отдельным компонентам списка. Сам пытался, но не выходит.
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
94
95
96
97
98
99
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
class BOOK
{
    static BOOK *last_memb;
    BOOK *prev, *next;
    string a, b, c, d;
public:
    BOOK(string, string, string, string);
    void add();
    static void reprint();
    void input();
    string geta(), getb(), getc(), getd();
};
 
BOOK::BOOK(string name1, string book1, string izdanie1, string izdat1)
{
    a = name1;
    b = book1;
    c = izdanie1;
    d = izdat1;
}
void BOOK::add()
{
    if (last_memb == NULL)
        this->prev = NULL;
    else
    {
        last_memb->next = this;
        this->prev = last_memb;
    }
    last_memb = this;
    this->next = NULL;
}
void BOOK::reprint()
{
    BOOK *uk;
    uk = last_memb;
    if (uk == NULL)
    {
        cout << "\nСписок пуст\n";
    }
    else
        cout << "\nСписок:\n";
    while (uk != NULL)
    {
        cout << uk->a << " " << uk->b << " " << uk->c << " " << uk->d << endl;
        uk = uk->prev;
    }
}
BOOK *BOOK::last_memb = NULL;
void BOOK::input()
{
    cout << "Введите имя   ";
    cin >> a;
    cout << "Введите название книги   ";
    cin >> b;
    cout << "Введите год издания   ";
    cin >> c;
    cout << "Введите имя издательства   ";
    cin >> d;
    cout << endl;
}
string BOOK::geta()
{
    return a;
}
string BOOK::getb()
{
    return b;
}
string BOOK::getc()
{
    return c;
}
string BOOK::getd()
{
    return d;
}
 
void main()
{
    setlocale(LC_ALL, "Russian");
    string a, b, c, d;
    BOOK A(a, b, c, d);
    A.input();
    A.add();
    BOOK B(a, b, c, d);
    B.input();
    B.add();
    BOOK C(a, b, c, d);
    C.input();
    C.add();
    BOOK::reprint();
    system("pause");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2016, 01:17
Ответы с готовыми решениями:

Функция удаления чётных элементов двусвязного списка
bool delete_even(circle_list *&amp;list) {circle_list *curr=list, *first=list; *temp=NULL; if...

Написать функцию удаления четных элементов двусвязного списка
я тут что-то набросал, но это бред похоже.подправьте или переправьте :umbrage: кому не сложно....

Функция, удаляющая элемент из двусвязного списка
Написать функцию, удаляющую элемент из двусвязного списка. Убедитесь, что программа работает, когда...

Функция удаления из списка
помогите разобраться почему не работает функция удаления? плз #include &lt;iostream&gt; using...

5
252 / 158 / 118
Регистрация: 26.11.2012
Сообщений: 384
18.10.2016, 15:51 2
Создать двусвязный список согласно условию
C++
1
static BOOK *last_memb; // это для чего?
1
0 / 0 / 0
Регистрация: 11.01.2016
Сообщений: 10
18.10.2016, 16:22  [ТС] 3
Apostol584, для того, чтобы использовать указатель this
0
252 / 158 / 118
Регистрация: 26.11.2012
Сообщений: 384
18.10.2016, 20:23 4
Zydyka, то что вы написали отдаленно похоже на узел списка.
static BOOK *last_memb; при создании нескольких экземпляров класса они будут использовать одну и туже переменную(она не будет создаваться при создании нового экземпляра).
C++
1
2
3
4
5
6
class BOOK{
    BOOK *prev, *next;
    string a, b, c, d;
public:
    ...
};
или
C++
1
2
3
4
5
6
7
8
9
10
11
class BOOK{
    string a, b, c, d;
public:
    ...
};
 
struct Node{
    Node *next, *prev;
    Book data;
    ...
};
Добавлено через 28 минут
вот пример реализации линейный двунаправленный список
Цитата Сообщение от Zydyka Посмотреть сообщение
Apostol584, для того, чтобы использовать указатель this
Это у вас по заданию?
1
0 / 0 / 0
Регистрация: 11.01.2016
Сообщений: 10
18.10.2016, 21:08  [ТС] 5
Apostol584, спасибо за материал. Да, по заданию.
0
252 / 158 / 118
Регистрация: 26.11.2012
Сообщений: 384
18.10.2016, 22:01 6
перегрузите оператор
C++
1
2
3
4
5
6
7
8
        List& operator = (const List &other) {
            if (this != &other){
 
                //очищаем список
                //копируем список
            }
            return *this;
        }
1
18.10.2016, 22:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2016, 22:01
Помогаю со студенческими работами здесь

Не работает функция удаления элемента из списка
Двунаправленный линейный список, состоящий из: имени автора, названия книги, года издания и...

Функция удаления элемента односвязного списка
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; struct A { int key; };

Функция удаления строки с номером к из списка
Хелп , заранее спасибо

Функция удаления из списка всех элементов между минимальным и максимальным числом
Здравствуйте! Помогите написать функцию удаления всех элементов между минимальным и максимальным...


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

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

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