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

Скиньте литературу по спискам в C++ - C++

Восстановить пароль Регистрация
 
maxm
 Аватар для maxm
33 / 20 / 6
Регистрация: 17.07.2014
Сообщений: 351
05.08.2014, 23:06     Скиньте литературу по спискам в C++ #1
Скиньте литературу по спискам в С++, НО которая расчитана на полного чайника (т.е. где все будет до мелчайших подробностей расписано). Может кто учился по такой, может знает.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2014, 23:06     Скиньте литературу по спискам в C++
Посмотрите здесь:

C++ Задача по кольцевым спискам
C++ задача по спискам.
скиньте Дистрибутив linux с kdevelop чтобы запускать с флешке C++
C++ Непонятное задание по спискам
Литература по связаным спискам C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
05.08.2014, 23:07     Скиньте литературу по спискам в C++ #2
Цитата Сообщение от maxm Посмотреть сообщение
Скиньте литературу по спискам в С++
По каким спискам?
maxm
 Аватар для maxm
33 / 20 / 6
Регистрация: 17.07.2014
Сообщений: 351
05.08.2014, 23:11  [ТС]     Скиньте литературу по спискам в C++ #3
Как мне известно, бывают односвязные, двусвязные, многосвязные.
Интересует с нуля - применение, плюсы и минусы использования и прочее.

Решаю задачи из этой темы по структурах данных из этого топика Большая коллекция решенных задач
kylroma
Одессит
 Аватар для kylroma
44 / 44 / 18
Регистрация: 30.12.2013
Сообщений: 203
Записей в блоге: 1
Завершенные тесты: 1
05.08.2014, 23:12     Скиньте литературу по спискам в C++ #4
Это?
http://ru.cppreference.com/w/cpp/container/list+
У С.Прата есть (Прата С. Язык программирования С++ Лекции и упражнения 2011), примерно 900 страница.
maxm
 Аватар для maxm
33 / 20 / 6
Регистрация: 17.07.2014
Сообщений: 351
05.08.2014, 23:16  [ТС]     Скиньте литературу по спискам в C++ #5
Примеров нету, расчитано на знающих людей, нужно простым языком и докладно.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
06.08.2014, 00:03     Скиньте литературу по спискам в C++ #6
Если ты не понял что-то с первого раза это не беда со всеми такое бывает. И это вовсе не означает, что написано на "непонятном" языке. Можешь теорию прочитать в одном источнике, примеры взять в другом, что-то иное - в третьем. Делай как делают большинство грамотных людей...
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,964
06.08.2014, 06:56     Скиньте литературу по спискам в C++ #7
Скиньте литературу по спискам в С++, НО которая расчитана на полного чайника (т.е. где все будет до мелчайших подробностей расписано).
Дональд Кнут, Искусство Программирования, первый том, вторая глава. И будут вам мельчайшие подробности внутреннего устройства списков. По усвоении внутреннего устройства списков, прочитать мануал по std::list.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
07.08.2014, 08:24     Скиньте литературу по спискам в C++ #8
Уильям Топп, Уильям Форд "Структуры данных в C++"
zer0mail
2189 / 1872 / 187
Регистрация: 03.07.2012
Сообщений: 6,665
Записей в блоге: 1
07.08.2014, 08:42     Скиньте литературу по спискам в C++ #9
Возьми лист бумаги, нарисуй пустой список и добавление в него хотя бы пяти элементов. Потом удали из него средний, первый, последний, оставшиеся. Смотри, как меняются связи про операциях.
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,964
07.08.2014, 09:42     Скиньте литературу по спискам в C++ #10
Возьми лист бумаги, нарисуй пустой список и добавление в него хотя бы пяти элементов. Потом удали из него средний, первый, последний, оставшиеся. Смотри, как меняются связи про операциях.
Так не нарисует же чайник правильно (без перемещения элементов в памяти при вставке/удалении). И будет потом вопрошать почему в списке нет оператора "получить сразу третий элемент".
zer0mail
2189 / 1872 / 187
Регистрация: 03.07.2012
Сообщений: 6,665
Записей в блоге: 1
07.08.2014, 10:22     Скиньте литературу по спискам в C++ #11
Я к тому, что мало читать код - надо наглядно изобразить, что он делает /должен делать.
GetHelp
-8 / 60 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
07.08.2014, 10:27     Скиньте литературу по спискам в C++ #12
первая ссылка гугла все очень наглядно...
Greeezly
 Аватар для Greeezly
6 / 6 / 1
Регистрация: 31.08.2012
Сообщений: 230
07.08.2014, 11:40     Скиньте литературу по спискам в C++ #13
Односвязный список
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
#include <iostream.h>
 
/*Ниже приведена программа,которая формирует стек из пяти целых чисел (1,2,3,4,5) 
и выводит его на экран. Функция помещения в стек по традиции называется push,а выборки pop.
Указатель для работы со стеком(top) всегда ссылается на его вершину.*/
 
//Структура - элемент стека
struct Node {
    int d;         //данные элемента структуры
    Node *p;       //Указатель для связи между структурами такого же типа
};
//-----------------------------
Node *first(int d);            //Формирование первого элемента(new)
void push(Node **top,int d);   //Добавление в стек (new)
int pop(Node **top);           //Выборка из стека  (delete)
//-----------------------------
//Главная функция
int main(){
    Node *top=NULL;          //Начальная инициализация указателя-вершины нулевым адресом .       
      top=first(1);            //Создание первого элемента стека     
 
for(int i=2;i<6;i++)push(&top,i); //Добавление в стек четырёх элементов   
while(top)            //Цикл вывода на экран значений элементов стека,и удаление их из памяти.                  
{                     //Цикл длится пока на вершину(в указатель top) не попадёт нулевой адрес.
cout<<'\n';           //Переход на следующую строку в консоли.
cout<<pop(&top)<<' '; //Вывод значений возвращаемых функцией pop(...)              
}
cout<<'\n';           //Переход на следующую строку в консоли.
    return 0;       //Возвращаем,что всё норм.                  
}
//------------------------------
//Начальное формирование стека
Node *first(int d){
    Node *pv=new Node;   //Создаём элемент: структура.
    pv->d=d;             //Присваиваем полю данных значения.
    pv->p=0;             //Первый элемент даёт признак конца стека NULL нужно при выборке. 
      cout<<pv->d<<' ';    //Выводи значение поля структуры. Это тоже можно убрать.
    return pv;           //Возвращаем адрес структуры.
}
 
//Занесение в стек
void push(Node **top,int d){
Node *pv=new Node;         //Создаём элемент: структура.
pv->d=d;                   //Присваиваем полю данных значения.
pv->p=*top;                //Созданный Элемент. Связыва-ся с элементом,который сейчас на Вершине
*top=pv;                   //Созданный Элемент: помещ-тся на вершину стека вместо старой вершины
cout<<(*top)->d<<' ';      //Выводится значение Созданного элемента Этот момент можно убрать.
}
//-----------------------------
//Выборка из стека
int pop(Node **top){
int temp=(*top)->d;        //Получаем значение элемента из вершины.
Node *pv=*top;             //Получаем адрес елемента из вершины.
(*top)=(*top)->p;            //В вершину помещаем новый элемент.
delete pv;                 //Удаляем старую вершину.
return temp;               //Возвращаем значение элемента из старой вершины.
Двусвязный список
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
#include <iostream>
using namespace std;
//Описание узла списка.
 
struct Node {
int d;
Node *next;
Node *prev;
Node():next(NULL),prev(NULL), d(-332215){}
Node(Node* ptr_n, Node *ptr_p , int data): next(ptr_n),prev(ptr_p), d(data) {}
};
 
 
//Функции для работы со списком.
//--------------------------------------------------------
Node * Create(int data);                 //создает список.
int add(Node**const pend , int data);    //добавить в конец списка.
int pop(Node**const pbeg);               //выборка  из начала списка.
 
//полная выборка.  
void Update(Node **const pbeg, Node** const pend ){ while(*pbeg)pop(pbeg); (*pend)=NULL; }       
 
void ShowE(Node *pend);                  //показать с конца.
void ShowB(Node *pbeg);                  //показать с начала.
/*выводит в зависимости от того: какой указатель передан: на конец или начало. для кольцевых не работает. */
void Show(Node *ptr); 
//--------------------------------------------------------
int main(){
 
Node *pbeg = NULL;     //на начало списка.
Node *pend = NULL;     //на конец  списка.
int numb; 
cout<<"Input numb\t"; cin>>numb;
pend = Create(numb);    //создаем   список.
pbeg = pend;
 
int i = 0;
while(i<10){ 
cout<<"Input numb\t"; cin>>numb;
add(&pend,numb);
i++;
}
Show(pend);
Show(pbeg);
Update(&pbeg,&pend);
return 0;
}
//создает список.
Node * Create(int data){ Node *pv = new Node(NULL,NULL,data); ; return pv; }
 
//добавить в конец списка.
int add(Node**const pend , int data){
Node *pv = new Node(NULL,*pend,data);
(*pend)->next = pv; 
(*pend) = pv;
return 0;
}
 
//выборка  из начала списка.
int pop(Node**const pbeg){
Node *tmp = (*pbeg);
if(tmp){
int d = tmp->d;
(*pbeg)=(*pbeg)->next;
delete tmp;
return d;
}
return -1;
}
 
//показать с конца.
void ShowE(Node *pend){ while(pend){    cout<<pend->d<<' '; pend = pend->prev;   } cout<<endl;     }
//показать с начала.
void ShowB(Node *pbeg){ while(pbeg){    cout<<pbeg->d<<' '; pbeg = pbeg->next;   } cout<<endl;     }    
 
/*выводить в зависимости от того: какой указатель передан: на конец или начало. для кольцевых не работает. */
void Show(Node *ptr){
if(ptr){
if((ptr->next==NULL)&&(ptr->prev==NULL))  {while(ptr){  cout<<ptr->d<<' '; ptr=ptr->prev;   } cout<<endl; return; }
//Выводим список с конца. если:
if((ptr->next == NULL)&&(ptr->prev!=NULL)){     while(ptr){     cout<<ptr->d<<' '; ptr=ptr->prev;   } cout<<endl; return; }
//Выводим сначала если
if((ptr->next != NULL)&&(ptr->prev==NULL)){     while(ptr){     cout<<ptr->d<<' '; ptr=ptr->next;   } cout<<endl; return; }
return ;
}
 
}
maxm
 Аватар для maxm
33 / 20 / 6
Регистрация: 17.07.2014
Сообщений: 351
08.08.2014, 15:11  [ТС]     Скиньте литературу по спискам в C++ #14
Цитата Сообщение от Renji Посмотреть сообщение
Так не нарисует же чайник правильно
Да не такой уже и чайник, я немного шарю в этом.
Суть списков мне ясна, меня интересует подробный разбор элементов синтаксиса, которые нужны, чтобы сделать связные списки.
pavel911
6 / 6 / 2
Регистрация: 02.08.2014
Сообщений: 119
08.08.2014, 17:13     Скиньте литературу по спискам в C++ #15
В Дейтелах есть: http://padabum.com/d.php?id=15159
zer0mail
2189 / 1872 / 187
Регистрация: 03.07.2012
Сообщений: 6,665
Записей в блоге: 1
08.08.2014, 18:52     Скиньте литературу по спискам в C++ #16
Цитата Сообщение от maxm Посмотреть сообщение
меня интересует подробный разбор элементов синтаксиса, которые нужны, чтобы сделать связные списки.
Никогда бы не подумал, что проблема может быть в синтаксисе . Обычные структуры и обычные поля-указатели (азбука даже не С++, а обычного С)...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2014, 20:40     Скиньте литературу по спискам в C++
Еще ссылки по теме:

C++ пожалуйста скиньте кто-нибудь программу, которая считает матрицы!
C++ Скиньте stdio.h
Скиньте интересные задания по ООП С++ C++

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
08.08.2014, 20:40     Скиньте литературу по спискам в C++ #17
Цитата Сообщение от maxm Посмотреть сообщение
разбор элементов синтаксиса, которые нужны, чтобы сделать связные списки.
C++
1
std::list < type > lst ;
std - пространство имен,
:: - scope resolution operator,
list - шаблонный класс,
< type > - тип элементов, которые будут храниться в списке,
lst - имя переменной списка
Yandex
Объявления
08.08.2014, 20:40     Скиньте литературу по спискам в C++
Ответ Создать тему
Опции темы

Текущее время: 23:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru