, .
, , . .
: , . , . .
.
1. , . ( main() ). :
struct Data
{
int a; //
};
struct DList
{
Data d;
DList *prev; //
DList *next; //
};
2. :
DList *Begin = NULL; //
DList *End = NULL; //
3. - . , . 3, 5 1:
//
DList *t = new DList;
t->d.a = 3;
t->prev = NULL;
t->next = NULL;
//
Begin = t;
End = t;
//++++++++++++++++++++++++ +++++++++++++++
//
t->next = new DList;
DList *p = t;
t = t->next;
t->prev = p;
t->d.a = 5;
t->next = NULL;
End = t;
//
t->next = new DList;
p = t;
t = t->next;
t->prev = p;
t->d.a = 1;
t->next = NULL;
End = t;
, . .
1. :
void print_forward(DList *Begin)
{
DList *p = Begin;
cout << "Spisok (forward):" << endl;
while(p)
{
cout << p->d.a << endl;
p = p->next;
}
}
:
print_forward(Begin);
, print() .
2. :
void print_back(DList *End)
{
DList *p = End;
cout << "Spisok (back):" << endl;
while(p)
{
cout << p->d.a << endl;
p = p->prev;
}
}
:
print_back(End);
. , :
p = p->prev;
, .
|
|
, . , . .
( , , .. 3, 5, 1, 9):
(Data List), . :
List *u = NULL;
. , , 9 , :
x->next = u;
.
, , : , , , . c:
void printC(List *u)
{
if(u!= NULL)
{
List *p = u;
cout << "Kolcevoj Spisok:" << endl;
cout << p->d.a << endl;
p = p->next;
while(p!= u)
{
cout << p->d.a << endl;
p = p->next;
}
}
else
cout << "Spisok pust." << endl;
}
:
printC(u);
, , , .
.
, : . , , .
, . , () . , , : . , . . |
. Data Stack:
struct Data
{
int a;
};
struct Stack
{
Data d;
Stack *next;
};
:
Stack *u = NULL;
.
1. . Push() push, .
void Push(Stack **u, Data &x)
{
Stack *t = new Stack; //
t->d.a = x.a; //
t->next = *u; //
*u = t; //
}
:
Push(&u,x);
x Data.
2. . ( pop ).
bool Pop(Stack **u, Data &x)
{
if(*u == NULL)
{
cout << "Pustoj Stack" << endl;
return false;
}
Stack *t = *u;
x.a = t->d.a; //
|
|
*u = t->next; //
delete t; //
return true;
}
:
Data y;
if(Pop(&u, x))
{
y = x;
cout << "y=" << y.a << endl;
}
( ) . , . :
bool Read(Stack **u, Data &x)
{
if(*u == NULL)
{
cout << "Pustoj Stack" << endl;
return false;
}
Stack *t = *u;
x.a = t->d.a; //
return true;
}
Read() Pop().
, : , () . FIFO (First Input First Output, .. ).
.
, , : . , : . . ? . .
. , , : 3, 5, 1.
Data () Queue ():
struct Data
{
int a;
};
struct Queue
{
Data d;
Queue *prev; //
Queue *next; //
};
:
Queue *Begin = NULL; //
Queue *End = NULL; //
.