Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
IceStrength
0 / 0 / 2
Регистрация: 25.10.2014
Сообщений: 56
1

Работа с односвязным списком

05.04.2015, 19:47. Просмотров 349. Ответов 1
Метки нет (Все метки)

Есть два вопроса
1)как найти сумму двух соседних элементов элемента x.
2)Как сделать чтоб функция RemovePositive удаляла все положительные элементы, а не последний положительный

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
140
141
#include<iostream>
using namespace std;
struct ListItem
{
    int item;
    ListItem *next;
};
 
class List
{
private:
    ListItem *head;
    int count;
public:
    List();
 
 
 
 
    void AddTail(const int& item);
 
    void Remove(int index);
    void Show()
    {
        ListItem  *element = head;
        while (element){
            cout << element->item << " ";
            element = element->next;
 
        }
 
    }
 
    int positive() {
        ListItem* temp = head;
        int i = 0;
        while (temp) {
            if (temp->item > 0) {
                i++;
            }
            temp = temp->next;
 
        }
        return i;
 
    }
    int negative() {
        ListItem* temp = head;
        int i = 0;
        while (temp) {
            if (temp->item < 0)
            {
 
                i++;
            }
            temp = temp->next;
 
        }
        return i;
 
    }
    
        void RemovePositive()
        {
            ListItem *temp = head;
 
 
 
        
                int ind = -1, i = -1;
            while (temp)
            {
                i++;
                if (temp->item<0)
                {
                    ind = i;
                }
                temp = temp->next;
            }
            Remove(ind);
        }
 
        
    };
 
List::List()
{
    head = 0;
    count = 0;
}
 
 
 
 
 
 
void List::AddTail(const int& item)
{
    ListItem  *temp = new ListItem;
    temp->item = item;
    temp->next = 0;
 
    if (!count)
        head = temp;
    else
    {
        ListItem  *tail = head;
        int i = 0;
        while (tail->next)
            tail = tail->next;
        tail->next = temp;
    }
    count++;
}
 
 
void List::Remove(int index)
{
    if (index >= count)
        return;
 
    ListItem  *temp;
 
    if (!index)
    {
        temp = head;
        head = head->next;
        delete temp;
    }
    else
    {
        ListItem  *prev = head;
        int i = 0;
        while (i++ < index - 1)
            prev = prev->next;
        temp = prev->next;
        prev->next = temp ? temp->next : 0;
        delete temp;
    }
    count--;
}
Добавлено через 1 час 29 минут
проблему с удалением решил.
а вот как найти сумму 2 соседних элементов элемента икс я не знаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2015, 19:47
Ответы с готовыми решениями:

Работа с односвязным списком
Дан односвязный список. Класс студент (фамилия группа). Сделать меню, т.е....

Работа с односвязным линейным списком
Здравствуйте, нужна ваша помощь , нужно програмка для работы с односвязным...

Работа с линейным односвязным (двухсвязным) списком
Создать линейный односвязный (двухсвязный) список. Из списка удалить...

Работа с односвязным списком, неправильно вызываются функции
В int main() некорректно вызываются функции, в чем может быть дело?(программа...

Работа с односвязным списком (удаление четных элементов)
Дан класс (год выпуска, количество страниц). У меня уже есть добавление...

1
_Valera_
489 / 371 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
05.04.2015, 20:22 2
сначала найти предыдущий элемент, а потом последующий , Вы так уже делали в программе, циклом ищем нужный элемент, а потом ищем следующий
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2015, 20:22

Работа с односвязным списком (минимизировать время выполнения программы)
Нужна помощь в УСОВЕРШЕНСТВОВАНИИ именно данного списка. Проблема во времени...

Задача с односвязным списком
Ребята, нужна помощь, кто может составьте. Буду благодерен. У меня не...

Реализация с односвязным списком
Приветствую! Есть созданная программа: #include &lt;iostream&gt; #include &lt;fstream&gt;...


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

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

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