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

Классы. Двунаправленный список

21.09.2014, 01:31. Показов 554. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Проблема в ф-ции deleteByValue(int value0) , она удаляет не только один эл-т, но вдобавок ещё все предыдущие...... По контрольным значениям я понял, что элементы: currElement->next->prev и currElement->prev почему-то нули... Вопрос: Почему там нули?...

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
100
101
102
103
104
105
106
 #include <iostream>
 
using namespace std;
 
struct ListElement
{
    int value;
    ListElement *next;
    ListElement *prev;
};
 
struct List2
{
    ListElement *root;
    void addToBegin(int value0);
    void deleteByValue(int value0);
    void showList();
 
    List2();
 
};
 
List2::List2()
{
    root=NULL;
}
 
 
    void::List2::addToBegin(int value0)
    {
 
      ListElement *newElement=new ListElement;
      newElement->value=value0;
      newElement->next=root;                       // Чтобы в следующей иттерации мы могли перейти к этому эл-ту
      newElement->prev=NULL;
 
      root=newElement;
 
    }
 
 
void::List2::deleteByValue(int value0)
{
           int m=value0;
 
           ListElement *currElement=root;
 
          while(currElement!=NULL)
          {
            if(value0==(currElement->value))
           {
              if((currElement->next)!=NULL)  //Если следующий эл-т не 0
              {
                currElement->next->prev=currElement->prev;
              }
 
              if((currElement->prev)!=NULL) //Если предыдущий эл-т не 0
              {
                currElement->prev->next=currElement->next;
              }
 
              else
              {
                 root=currElement->next;   // ДЛЯ ПРОДОЛЖНЕИЯ ПОИСКА
              }
                 currElement=NULL;
                 return;
           }
 
 
        currElement=currElement->next;
    }
 
 
}
 
 
    void::List2::showList()
    {
        ListElement *currElement=root;
 
        cout<<endl<<"List: "<<endl;
 
        while(currElement!=NULL)
        {
            cout<<currElement->value<<endl;
            currElement=currElement->next;
        }
    }
 
 
int main()
{
    List2 A;
    A.addToBegin(2);     // Добавляем 2 в НАЧАЛО!!!!!!!
    A.addToBegin(3);
    A.addToBegin(5);
    A.addToBegin(7);
    A.addToBegin(11);
    A.addToBegin(13);
    A.showList();
    A.deleteByValue(7);
    A.showList();
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2014, 01:31
Ответы с готовыми решениями:

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

Двунаправленный список
Люди, объясните пжлст, что такое двунаправленный список?

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

двунаправленный список
Двунаправленный список.Найти сумму первого и последнего элементарных.Заранее спасибо

1
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
21.09.2014, 02:44 2
Цитата Сообщение от rivares1853 Посмотреть сообщение
Почему там нули?
а почему там должны быть не нули? единственная строчка, которая присваивает что-то prev это
C++
1
newElement->prev=NULL;
Добавлено через 1 минуту
NULL рекомендуется заменить на nullptr Поведение оператора new платфоромозависимое?
0
21.09.2014, 02:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2014, 02:44
Помогаю со студенческими работами здесь

Двунаправленный список
Помогите пожалуйста удалить заданный элемент из двунаправленного списка... Напишите как это...

двунаправленный список.
Доброго времени суток. Прощу помочь с заданием которое звучит так : Построить кольцевой...

Двунаправленный список
Вставка элемента в список. Удалениеэлемента из списка Сортировка списка. Поиск элемента в...

Двунаправленный список
Как создать двунаправленный список из целых чисел? и как заменить повторяющиеся последовательности...


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

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

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