Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа со списками / 5 сообщений из 5, страница 1 из 1
25.09.2004, 21:17
    #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
25.09.2004, 22:06
    #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
25.09.2004, 22:07
    #32711702
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа со списками
Работа над ошибками:
<--int sum = std::accumulate(lst.begin(), lst.end());
-->int sum = std::accumulate(lst.begin(), lst.end(), 0);
...
Рейтинг: 0 / 0
26.09.2004, 09:58
    #32711770
Шогал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа со списками
Спасибо
...
Рейтинг: 0 / 0
26.09.2004, 10:48
    #32711786
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа со списками
Кстати можешь юзануть std::vector


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


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