, , . , . . LIFO (last in first out, ).
( ) . NULL.
: ; ; ; , .
1. .
class Node
{ public:
char d; //
Node *next; //
Node (char dat = 0) { d = dat; next = 0;} //
};
class Stack
{Node *top; //
public:
Stack() { top = 0;} //
~Stack(); //
void push(char d); //
void print(); //
};
. push ' ᒺ Node , :
void Stack::push(char d)
{
Node *pv = new Node(d); // '
if(!top) { top = pv;} //
else // :
{ pv->next= top;
top =pv;} //
}
, :
void Stack::print()
{ Node *pv = top;
cout << endl << " stack: ";
while(pv) { cout << pv->d << " ";
pv = pv->next; }
cout << endl;
}
' - :
Stack::~Stack()
{ if(top)
{ Node *pv = top;
while(pv) {pv = pv->next;
delete top;
top = pv;}
}
}
, Stack. 'BETA' .
void main()
{
Stack S;
S.push('B');
S.push('E');
S.push('T');
S.push('A');
S.print();
getch();
}
, , . , . . FIFO (first in first out, ).
( ) . / NULL. .
|
|
( ).
2. .
class Node
{public:
char d; //
Node *next; //
Node (char dat = 0) { d = dat; next = 0;} //
};
class Queue
{ Node *pbeg, *pend; //
public:
Queue() {pbeg = 0;} //
~Queue();//
void add(char d); //
void print();//
};
. add ' ᒺ Node , :
void Queue::add(char d)
{
Node *pv = new Node(d); // '
if(!pbeg) {pbeg = pv; pend = pv;} //
else // :
{pend->next=pv;
pend = pv;} //
}
, :
void Queue::print()
{ Node *pv = pbeg;
cout << endl << " queue: ";
while(pv) {cout << pv->d << " ";
pv = pv->next; }
cout << endl;
}
' - :
Queue::~Queue()
{ if(pbeg)
{ Node *pv = pbeg;
while(pv)
{ pv = pv->next;
delete pbeg;
pbeg = pv;
}
}
}
, Queue. 'BETA' .
void main()
{
Queue Q;
Q.add('B');
Q.add('E');
Q.add('T');
Q.add('A');
Q.print();
getch();
}