D
DenisNN
Здравствуйте! Подскажите пожалуйста,что означает строка tail->prev->next = pNode; в добавлении элемента в конец списка,зачем писать tail->prev->next = pNode, почему нельзя просто tail->prev = pNode ?
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
main
#include "dlist.h"
int main()
{
List L(8);
L.add_from_rfont(22);
L.add_from_rfont(34);
L.add_from_tail(8);
L.add_from_tail(78);
L.add_from_tail(92);
L.shov_from_foront();
getch();
return 0;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
dlist
#include "dlist.h"
List::List() // Пустой список.
{
head = tail = new Node;
tail->next = 0;
tail->prev = 0;
}
List::List(int dta)
{
head = tail = new Node;
tail->next = 0;
tail->prev = 0;
List::add_from_rfont(dta);
}
List::Node::Node(int dta):data(dta)
{
nodeCount++;
}
void List::add_from_rfont(int dta)
{
Node *pNode = new Node(dta);
pNode->next = head;
pNode->prev = 0;
head->prev = pNode;
head = pNode;
}
void List::add_from_tail(int dta)
{
Node *pNode = new Node(dta);
pNode->next = tail;
pNode->prev = tail->prev;
tail->prev->next = pNode; //////////////////////////////////// !!! Вот эта строка не понятна !!! \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
tail->prev = pNode;
}
void List::shov_from_foront()
{
Node *pn;
pn = head;
while(pn!=tail)
{
cout << pn->data << endl;
pn = pn->next;
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
h
#pragma once
#include <iostream>
#include <conio.h>
using namespace std;
static int nodeCount = 0; // Количество созданных объектов.
class List
{
class Node
{
//friend class List;
public:
int data;
Node *next;
Node *prev;
int n; // № элемента.
Node(int);
Node(){};
~Node();
};
Node *head;
Node *tail;
public:
void add_from_rfont(int);
void add_from_tail(int);
void shov_from_foront(); // Показать от начала.
void shov_from_tail(); // Показать от хвоста.
void show_from_nth(int); // Показать от заданного элемента.
List(int);
List();
~List(){}
};
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
main
#include "dlist.h"
int main()
{
List L(8);
L.add_from_rfont(22);
L.add_from_rfont(34);
L.add_from_tail(8);
L.add_from_tail(78);
L.add_from_tail(92);
L.shov_from_foront();
getch();
return 0;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
dlist
#include "dlist.h"
List::List() // Пустой список.
{
head = tail = new Node;
tail->next = 0;
tail->prev = 0;
}
List::List(int dta)
{
head = tail = new Node;
tail->next = 0;
tail->prev = 0;
List::add_from_rfont(dta);
}
List::Node::Node(int dta):data(dta)
{
nodeCount++;
}
void List::add_from_rfont(int dta)
{
Node *pNode = new Node(dta);
pNode->next = head;
pNode->prev = 0;
head->prev = pNode;
head = pNode;
}
void List::add_from_tail(int dta)
{
Node *pNode = new Node(dta);
pNode->next = tail;
pNode->prev = tail->prev;
tail->prev->next = pNode; //////////////////////////////////// !!! Вот эта строка не понятна !!! \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
tail->prev = pNode;
}
void List::shov_from_foront()
{
Node *pn;
pn = head;
while(pn!=tail)
{
cout << pn->data << endl;
pn = pn->next;
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
h
#pragma once
#include <iostream>
#include <conio.h>
using namespace std;
static int nodeCount = 0; // Количество созданных объектов.
class List
{
class Node
{
//friend class List;
public:
int data;
Node *next;
Node *prev;
int n; // № элемента.
Node(int);
Node(){};
~Node();
};
Node *head;
Node *tail;
public:
void add_from_rfont(int);
void add_from_tail(int);
void shov_from_foront(); // Показать от начала.
void shov_from_tail(); // Показать от хвоста.
void show_from_nth(int); // Показать от заданного элемента.
List(int);
List();
~List(){}
};