powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа со списками
5 сообщений из 5, страница 1 из 1
Работа со списками
    #32711693
Шогал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В сях++ я программирую второй день, до этого программировал на паскале. Правильно ли я работаю со списками?
Код: plaintext
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.
 // Описание списка 
struct TList {
	int value;
	TList *next;
} *list;

 // Освобождение памяти 
void dispose(TList *list){
    if(list->next) dispose(list->next);
    delete(list);
}

void main(){
     // Создание нулевого элемента (пустой, служит в роли головы) 
    list = new TList;
    TList *head = list;
    list->next = NULL;

    ......................
     // Добавление элемента 
    list->next = new TList;
    list = list->next;
    list->value = n;
    list->next = NULL;

    ......................
     // Переход в начало списка 
    list = head;    

    ......................
     // Вызов процедуры очищения списка 
    dispose(head);
}
На практике на малых тестах данный код работает. Но может быть такая реализация содержит баги и мне грозит перетирание значений переменных либо утечка памяти, или все сделано правильно?
...
Рейтинг: 0 / 0
Работа со списками
    #32711701
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПравильно ли я работаю со списками?

С академической точки зрения все правильно, но с практической таким образом много не наработаешь. Поэтому, если Вы практикующий программист C++ или собираетесь им стать, то рекомендую обратиться к изучению стандартной библиотеки STL (standard template library). Вот пример работы с тем же самым списком целых, но уже не на низком уровне:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
#include <list>          // list 
#include <iostream>  // cin, cout 
#include <iterator>    // istream_iterator, back_inserter 
#include <algorithm>  // copy  
#include <numeric>   // accumulate 

int main()
{   
      // список целых 
     std::list<int> lst;
      // программный ввод 
     lst.push_back( 1 );
     lst.push_back( 14 );
      // ввод c консоли 
     std::copy(
		std::istream_iterator<int>(std::cin), 
		std::istream_iterator<int>(), 
		std::back_inserter(lst)
     );
      // подсчитаем сумму элементов списка 
     int sum = std::accumulate(lst.begin(), lst.end());
      // 
     std::cout << "sum = " << sum;  
     return  0 ;
}
...
Рейтинг: 0 / 0
Работа со списками
    #32711702
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работа над ошибками:
<--int sum = std::accumulate(lst.begin(), lst.end());
-->int sum = std::accumulate(lst.begin(), lst.end(), 0);
...
Рейтинг: 0 / 0
Работа со списками
    #32711770
Шогал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
...
Рейтинг: 0 / 0
Работа со списками
    #32711786
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати можешь юзануть std::vector


 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа со списками
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]