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

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

Войти
Регистрация
Восстановить пароль
 
Aecttann
6 / 6 / 0
Регистрация: 19.10.2013
Сообщений: 327
#1

Удаление элемента в списке - C++

28.05.2014, 21:36. Просмотров 297. Ответов 1
Метки нет (Все метки)

Необходимо реализовать метод удаления элемента из списка не после определённого элемента (как сделано в коде), а по индексу этого элемента


главная:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include "Untitled.h"
 
 
int main()
{
    setlocale(LC_ALL, "RUS");
    List l;
    Node *N1=l.create(1);
 
    Node *N2=l.ins(20,N1);
 
    Node *N4=l.ins(32,N2);
 
    Node *N3=l.ins(5,N2);
    Node *N5=l.ins(10,N4);
    l.print();
 
    cout << endl;
 
    l.remove(N1);
    l.print();
 
    l.clear();
    l.print();
 
 
    cout << " - " << l.empty() << ";" << endl << "Количество элементов - " << l.size() <<";" << endl;
 
 
    return 0;}


вот здесь вызывается функция удаления элемента после N1:
C++
1
l.remove(N1);
хедер:
Кликните здесь для просмотра всего текста
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#ifndef LIST_H
#define LIST_H
 
#include <iostream>
 
using namespace std;
 
class Node
{
public:
    double data;
    Node *next;
    int index;
 
Node()
{
    data = 0;
    next = 0;
}
Node(double &data, Node *next = 0)
    {
        this->data = data;
        this->next = next;
    }
};
 
class List
    {
        Node* head;
        int nodes;
 
public:
List()
{
    head = 0;
    nodes = 0;
}
 
int size()
{
    return nodes;
}
 
bool empty()
{
    return nodes == 0;
}
Node *create(double value)
{
    head = new Node(value);
    nodes++;
    reindex();
    return head;
}
 
Node *ins(double value, Node *where)
{
    Node *insNode;
    insNode = new Node(value);
    insNode->next = where->next;
    where->next = insNode;
    nodes++;
    reindex();
    return insNode;
}
 
void reindex()
{
    if (nodes == 0)
    return;
    else
{
    Node *pNode = head;
    for (int i = 1; i < nodes; ++i)
{
    pNode->index = i;
    pNode = pNode->next;
}
}
}
 
void removebyindex()
{
        
}
 
void remove(Node *where)
{
    if (nodes>1 && where->next != 0)
{
    Node *temp = new Node;
    temp = where->next;
    where->next = where->next->next;
    delete temp;
    nodes--;
    reindex();
}
}
 
void clear()
{
        if (nodes == 0)
    cout << "deleted";
    Node *pNode = head;
    while (pNode->next != 0 && nodes != 1)
{
    remove(pNode);
}
//delete pNode;
    delete head;
 
    nodes--;
}
 
void print()
{
    if (nodes == 0)
    cout << endl << "Список пуст";
    else
{
    Node *pNode = head;
    for (int i = 1; i < nodes; ++i)
{
    cout << "Индекс = " << pNode->index << " Данные = " << pNode->data << " Следующий = " << pNode->next << endl;
    pNode = pNode->next;
}
}
}
 
};
 
#endif


функция удаления: (87-98 строки в хедере)
C++
1
2
3
4
5
6
7
8
9
10
11
12
void remove(Node *where)
{
    if (nodes>1 && where->next != 0)
{
    Node *temp = new Node;
    temp = where->next;
    where->next = where->next->next;
    delete temp;
    nodes--;
    reindex();
}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2014, 21:36     Удаление элемента в списке
Посмотрите здесь:

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

Удаление элемента в списке - C++
Описать функцию, которая удаляет из списка все вхождения элемента Е, значение которого введено с клавиатуры. это само задание. ...

Добавление и удаление элемента в списке - C++
Ребят сделал код создания элементов списка, но не могу написать 1) код добавления элемента списка в конец списка 2) код удаления...

В программе не работает 1)удаление элемента, последнего в списке-зависает и - C++
В программе не работает 1)удаление элемента, последнего в списке-зависает и нужна операция обработки -обмен местами элементов с заданными...

Как можно сместить ID в односвязном списке после удаление элемента - C++
народ можете подсказать как можно сместить айди в односвязном списке послу удаление элемента, на пример у меня там были айди 1, 2, 3, 4 ...

Удаление в списке - C++
Реализован метод удаления после какого-то элемента в спике: void remove(Node *where) { if (nodes&gt;1 &amp;&amp; where-&gt;next != 0) { ...

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

удаление и поиск в списке - C++
Подскажите, как реализовать функции удаления и поиска числа в списке? Нужно, что бы удаление происходило по индексу элемента, а поиск по...

Удаление элементов в списке - C++
Помогите написать программу(скорее функцию), где нужно удалить в списке элементы с позиции N по K. Список циклический однонаправленный. ...

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

Удаление головы в Связном списке C++ - C++
Ребят, в чем ошибка? Вроде все проверил, но почему-то вылетает с ошибкой при попытке удалении головы списка, не могу понять в чем проблема....

Удаление по ключу в односвязном списке - C++
Написал алгоритм удаления по ключу в линейном, односвязном списке, но он не удаляет, а коверкает записи. Помогите разобраться.. ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
28.05.2014, 22:33     Удаление элемента в списке #2
мб. перегрузить operetor[] ?
Ответ Создать тему
Опции темы

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