单向链表高效的实现栈类,不含链表头和尾节点:
template <typename Object>
struct node
{
Object data;
node *next;
node( Object obj, node *ptr ):data( obj ),next( ptr ){ }
node( ) : next( NULL ){ }
};
template <typename Object>
class stack
{
private:
node<Object> *head;
public:
stack( ):head( NULL ){ }
~stack ( )
{
while (head) {
pop();
}
}
void push( Object obj )
{
node<Object> *ptr = new node<Object>( obj, head );
head = ptr;
}
void top( )
{
return head->data;
}
void pop( )
{
node<Object> *ptr = head->next;
delete head;
head = ptr;
}
};
int main(int argc, const char * argv[])
{
// insert code here...
std::cout << "Hello, World!\n";
return 0;
}
使用单项链表实现高效的队类,不含链表头和尾节点:
template <typename Object>
class queue
{
private:
node<Object> *front;
node<Object> *rear;
public:
queue( ):front(NULL), rear(NULL){ }
~queue( )
{
while (front) {
deque();
}
}
void enque( Object obj )
{
node<Object> *ptr = new node<Object>(obj);
if (rear) {
rear = rear->next = ptr;
}else
{
front = rear = ptr;
}
}
Object deque( )
{
Object temp = front->data;
node<Object> *ptr = front;
if (front->next == NULL) {
front = rear = NULL;
}
else
{
front = front->next;
delete ptr;
return temp;
}
}
};