Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Списки. С++

1.9K
29 сентября 2006 года
burst
94 / / 04.09.2006
Разбираюсь с АТД. Решил начать со списков.
3.0K
29 сентября 2006 года
Мerlin
267 / / 25.07.2006
1. Чему равен next последнего Node?
2. Вообще, для чего next, если узлы записываютя в вектор?
3. Какой смысл в nodes[1].makeHead(); если это значение все равно перезаписывается циклом ниже?

В общем, перед тем, как двинутся куда либо, нужно бы всерьез переработать код.
1.9K
01 октября 2006 года
burst
94 / / 04.09.2006
Да, первый пост был палевный, по сему его нет.
Что вы скажете на это?

Код:
# include <iostream.h>

class Node{
    int data;
    Node* next;
public:

/*Инициализирующий конструктор по умолчанию*/
    Node (){
        next = 0;
        data = 0;
    }
/*  Делает элемент головой списка:
    1. Устанавливает указатель текущего элемента на элемент для которого вызывается метод
    2. Возвращает указатель на текущий элемент   */ 
    Node* makeHead(){
        setData(0);
        next = this;
        prev = this;
    //  curent = this;
        return this;
    }
/*  Вставляет узел после текущего узла*/ 
    Node* insert(Node* curent){
        curent->next = this;
        curent = this;
        return curent;
    }
/*  Устанавливает поле данных узла*/
    void setData(int newData){
        data = newData;
    }
/*  Возвращает указатель на следующий узел*/
    Node* getNext(){
        return next;
    }
/*  Возвращает поле данных узла */
    int getData(){
        return data;
    }

/*Устанавливает текущий узел и возвращает указатель на него*/
    Node* setCurent(){
        return this;
    }
};
       


void main(){
   
    Node* curent;
   
    Node n0, n1, n2, n3, n4, n5, n6, n7, n8, n9;
   
    curent = n0.makeHead();
    curent = n1.insert(curent);
    curent = n2.insert(curent);
    curent = n3.insert(curent);
    curent = n4.insert(curent);
    curent = n5.insert(curent);
    curent = n6.insert(curent);
    curent = n7.insert(curent);
    curent = n8.insert(curent);
    curent = n9.insert(curent);

    curent = n1.setCurent();

/*  просмотр списка       */

    for(int i = 0 ; ; i++ ){
       
        curent->setData(i);
       
        cout<<curent->getData()<<endl;

        Node* nextNode = curent->getNext();

        if(curent->getNext() == 0 ) break;

        curent = nextNode->setCurent();

    }
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог