Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Связаные списки 
V
    Опции темы
FortMax
Дата 6.4.2009, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 2.10.2006
Где: Россия, г. Бироби джан ЕАО

Репутация: нет
Всего: 5



Кто-нибудь может на пальцах обьяснить что такое связанные списки ??? smile 


--------------------
user posted image
PM MAIL ICQ   Вверх
zim22
Дата 6.4.2009, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69





--------------------
PM MAIL   Вверх
FortMax
Дата 6.4.2009, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 2.10.2006
Где: Россия, г. Бироби джан ЕАО

Репутация: нет
Всего: 5



zim22, это-то понятно, а вот как и для чего их применять ??? 


--------------------
user posted image
PM MAIL ICQ   Вверх
GoldFinch
Дата 6.4.2009, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



FortMaxтебе их применять не надо
PM MAIL ICQ   Вверх
FortMax
Дата 6.4.2009, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 2.10.2006
Где: Россия, г. Бироби джан ЕАО

Репутация: нет
Всего: 5



Цитата(GoldFinch @  6.4.2009,  08:32 Найти цитируемый пост)
FortMax, тебе их применять не надо 
 это почему ???



--------------------
user posted image
PM MAIL ICQ   Вверх
Static
Дата 6.4.2009, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 6.11.2008

Репутация: нет
Всего: 2



имеется в виду, что если б было надо - вопрос стоял бы по-другому smile
Например - а как сделать ОТАК? А в ответ - используй связный список smile
--------------------
Я не настолько безнадежен, как кажется...
PM MAIL   Вверх
zim22
Дата 6.4.2009, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(FortMax @  6.4.2009,  08:15 Найти цитируемый пост)
, это-то понятно, а вот как и для чего их применять ???

это динамическая структура данных. она испольуется тогда, когда необходима. если она вам не нужна - не заморачивайтесь smile


--------------------
PM MAIL   Вверх
FortMax
Дата 6.4.2009, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 2.10.2006
Где: Россия, г. Бироби джан ЕАО

Репутация: нет
Всего: 5



я просто пока теорию штудирую=) вот на них и наткнулся, но так муторно написано, хотелось просто узнать когда и как их используют  smile

Добавлено через 1 минуту и 19 секунд
Цитата(zim22 @  6.4.2009,  08:54 Найти цитируемый пост)
если она вам не нужна - не заморачивайтесь smile 
 ладно пока не буду



--------------------
user posted image
PM MAIL ICQ   Вверх
andrew_121
Дата 6.4.2009, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Цитата(FortMax @  6.4.2009,  08:55 Найти цитируемый пост)
ладно пока не буду

Ответ убил smile 


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
afanp
Дата 6.4.2009, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 25.11.2008

Репутация: нет
Всего: нет



FortMax,  это такая фигня для хранения данных. и все данные связаны между собой одним или двумя узлами ( ну это все грубо говоря ) эх, помню долго врубался в эти указатели. если что спрашивай )
PM MAIL   Вверх
bsa
Дата 6.4.2009, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



FortMax, есть несколько типов контейнеров:
vector - динамический массив
list - двусвязный список
и др.

вектор - простейший массив, размеры которого могут меняться во время выполнения программы. Все значения хранятся в непрерывном участке памяти в порядке заполнения (т.е. это аналог обычному выделению памяти через new[], только с автоматическим управлением памятью). Время доступа к каждому элементу постоянно (не зависит от размера массива и номера элемента). Добавление/вставка/удаление не с конца могут быть довольно продолжительными. Все эти операции могут вызвать инвалидацию итераторов (т.е. сделают их не валидными).

лист (список) - это двусвязный список, доступ к случайному элементу которого занимает линейное время (зависит от номера элемента), вставка/удаление элементов - константна. Любая такая операция не приводит к инвалидации итераторов (кроме того, который указывал на удаляемый элемент). В простейшем виде, он делается путем добавления в структуру, описывающую элемент списка, указателей prev и next, которые указывают на предыдущий и следующий элемент списка соответственно.
PM   Вверх
Cheloveck
Дата 6.4.2009, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 5
Всего: 32



Напугали человека, теперь он будет связные списки всячески избегать.

На самом деле если разобраться, то это абсолютно просто.

Есть минимум два класса (хотя, можно обойтись и одним, но это сложнее и запутаннее), первый класс имеет указатель на объект второго класса и называется головным.
Второй класс, в нашем случае (довольно упрощённом), является телом. В нём находится указатель на объект того же класса. Когда мы добавляем к списку новый объект, мы сообщаем об этом головному классу. Тот смотрит, если в его указатель уже что-то записано, то он делегирует размещение нового элемента этому объекту (иначе новый элемент заносится в этот указатель). Объект проверяет свой указатель и если он пуст, присваивает ему адрес нового элемента, если нет - передаёт дальше.

Преимуществом такого подхода является манипулирование группой объектов из головного класса и наличие только одного указателя. Недостатком - время выполнения, чтобы получить доступ к определённому объекту, нужно найти его какой-либо идентификатор (конечно нужно позаботится о его создании заранее)  перебирая по порядку все объекты.
Цитата

FortMax, есть несколько типов контейнеров:
vector - динамический массив
list - двусвязный список
и др.

нельзя применять контейнеры не зная, что они делают... имхо

Это сообщение отредактировал(а) Cheloveck - 6.4.2009, 16:18


--------------------
user posted image
PM Jabber   Вверх
Slammer
Дата 6.4.2009, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 29.3.2006

Репутация: 1
Всего: 1



Всем привет. Решил не создавать новую тему, потому что тоже начал учить связной список, поскольку надо выполнить задачку:

Сделать односторонний связной список, в который вводим целые числа. И к ней функцию, которая выкидывает из списка те элементы, за которыми идут парные числа.

Можно попросить пдправить ошибки в этом коде, чтобы хотябы компилятор не ругался?((
Спасибо!
Код

#include <iostream>
using namespace std;

struct node{
       int info;
       node *next;
}

node *p = NULL;

void nodeDel(node *p){
     node *tmp;
     while(p && ((p->info % 2) == 0)){
             tmp = p;
             p = p->next;
             delete tmp;
     }  
}

int main(){
    
    int menu;
    int x;
    int many; 
    
    //saraksta viedosana
    cout << "How many elements you will use? "; 
    cin >> many;
    cout << "Input list of elements seperating by enter: ";
    node *p;
    p = new node;
    
    for(int i = 0; i < many; i++){
          cin >> x;
          p->info = x;
          p = p->next;
    }
    //menu
    cout << "Use Function && Print List (1) \n Print List (2) \n Delete List & Exit (3) \n";
    cin >> menu; 
    //(1)
    if(menu == 1){ 
        nodeDel(node);
        for(int i = 0; p != NULL; i++){
                cout << p->info << ", ";
                p = p->next;
        }
    }
    //(2)
    if(menu == 2){ 
        for(int i = 0; p != NULL; i++){
                cout << p->info << ", ";
                p = p->next;
        }
    }
    
    //(3)
        delete node;  
system("pause");    
return 0;    
}

PM MAIL   Вверх
zim22
Дата 6.4.2009, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Slammer @  6.4.2009,  17:54 Найти цитируемый пост)
чтобы хотябы компилятор не ругался?((

не ругается.
Код

#include <iostream>
using namespace std;

struct node{
       int info;
       node *next;
};

node *p = NULL;

void nodeDel(node *p){
     node *tmp;
     while(p && ((p->info % 2) == 0)){
             tmp = p;
             p = p->next;
             delete tmp;
     }  
}

int main(){
    
    int menu;
    int x;
    int many; 
    
    //saraksta viedosana
    cout << "How many elements you will use? "; 
    cin >> many;
    cout << "Input list of elements seperating by enter: ";
    node *p;
    p = new node;
    
    for(int i = 0; i < many; i++){
          cin >> x;
          p->info = x;
          p = p->next;
    }
    //menu
    cout << "Use Function && Print List (1) \n Print List (2) \n Delete List & Exit (3) \n";
    cin >> menu; 
    //(1)
    if(menu == 1){ 
        nodeDel(p);
        for(int i = 0; p != NULL; i++){
                cout << p->info << ", ";
                p = p->next;
        }
    }
    //(2)
    if(menu == 2){ 
        for(int i = 0; p != NULL; i++){
                cout << p->info << ", ";
                p = p->next;
        }
    }
    
    //(3)
        delete p;  
system("pause");    
return 0;    
}



--------------------
PM MAIL   Вверх
FortMax
Дата 7.4.2009, 07:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 2.10.2006
Где: Россия, г. Бироби джан ЕАО

Репутация: нет
Всего: 5



 smile 


--------------------
user posted image
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0896 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.