Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Добавить в класс List еще одну функцию удаления элемента из списка - C++

27.05.2014, 21:51. Просмотров 179. Ответов 0
Метки нет (Все метки)

Добавить в класс List еще одну функцию удаления элемента из списка. Параметр функции в данном случае - номер узла, после которого необходимо удалить элемент. Индексация начинается с 1. Номер головного узла (head) считается равным 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
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
133
134
135
136
137
138
139
#ifndef LIST_H
#define LIST_H
 
#include <iostream>
 
using namespace std;
 
class Node
{
 public:
     double data;
     Node *next;
 
     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++;
        return head;
    }
 
 
        Node *ins(double value,Node *where)
    {
        Node *insNode;
        insNode=new Node (value);
        insNode->next=where->next;
        where->next=insNode;
        nodes++;
        return insNode;
    }
 
 
    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--;
        }
    }
 
 
    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->data << " Следующий = " << pNode->next << endl;
                pNode=pNode->next;
            }
        }
    }
 
};
 
#endif
 
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(N2);
    l.print();
 
    l.clear();
    l.print();
 
 
    cout << " - " << l.empty() << ";" << endl << "Количество элементов - " << l.size() <<";" << endl;
 
 
    return 0;}


Помогите реализовать выделенные пункты, пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2014, 21:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Добавить в класс List еще одну функцию удаления элемента из списка (C++):

Написать функцию удаления элемента из списка - C++
Надо написать функцию Void del (int value) , которая удаляет элемент в списке и Elem *searth (int value) , что в списке ищет первый элемент...

Поправить функцию удаления последнего элемента односвязного списка - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdlib.h&gt; using namespace std; struct elem { int data; elem...

Добавить функцию удаления в класс "Очередь" - C++
Подскажите как реализовать функцию удаления(popQueue)? //queue.h #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; ...

Создать класс Элемент списка (Node), а затем класс Список (List) - C++
Задание: Создать класс Элемент списка (Node), а затем класс Список (List). В зависимости от варианта список должен быть одно или...

как в динамический массив добавить еще одну ячейку памяти? - C++
Всем привет! как в динамический массив добавить еще одну ячейку памяти? То бишь имеется какой нибудь динамический массив a и надо чтоб...

Можно ли из консольного приложения вызвать еще одну консоль через функцию? - C++
Если да, то в каком заголовке она лежит?

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2014, 21:51
Привет! Вот еще темы с ответами:

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

Реализация ф-ции удаления элемента из списка - C++
Здравствуйте. У меня задание - создать список и интерфейс работы с ним (1-создание списка, 2 вывод списка, 3 удаление элемента, 4 звпись в...

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

Не работает функция удаления элемента из списка - C++
Двунаправленный линейный список, состоящий из: имени автора, названия книги, года издания и названия издательства. #include &quot;stdafx.h&quot;...


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

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

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