# 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();
}
}
Списки. С++
Разбираюсь с АТД. Решил начать со списков.
2. Вообще, для чего next, если узлы записываютя в вектор?
3. Какой смысл в nodes[1].makeHead(); если это значение все равно перезаписывается циклом ниже?
В общем, перед тем, как двинутся куда либо, нужно бы всерьез переработать код.
Да, первый пост был палевный, по сему его нет.