栈和队列的链式实现,很简洁明了,是在读《C++大学教程》(第二版)时看到的,觉得很不错,
所以自己动手敲了一遍,留着以后学习。
在学校时学过一边《数据结构》,可是那会儿没理解,也没使用过复杂的。那会儿只是把它当成
名词解释背的,为的就是“分数”!现在想想实在是可悲!其实这些例子上学那会儿就看过了,当
时觉得很明了,很简单,觉得没必要自己动手。可是今天用到的时候却卡壳了,看来好记心真不
如烂笔头啊!
#include <iostream>
#include <iomanip>
#include <assert.h>
using namespace std;
//
//class ListNode
//
template< class NODETYPE > class List;
template< class NODETYPE >
class ListNode
{
friend class List< NODETYPE >;
public:
ListNode( const NODETYPE & );
NODETYPE getData() const;
private:
NODETYPE data;
ListNode< NODETYPE >* nextPtr;
};
template< class NODETYPE >
ListNode< NODETYPE >::ListNode( const NODETYPE & d) : data(d),nextPtr(0)
{
}
template< class NODETYPE >
NODETYPE ListNode< NODETYPE >::getData() const
{
return data;
}
///
//class List
///
template< class NODETYPE >
class List
{
public:
List();
~List();
void insertAtFront( const NODETYPE & );
void insertAtBack( const NODETYPE & );
bool removeAtFront( NODETYPE & );
bool removeAtBack( NODETYPE & );
bool isEmpty() const;
void print() const;
private:
ListNode< NODETYPE >* firstPtr;
ListNode< NODETYPE >* lastPtr;
ListNode< NODETYPE >* getNewNode( const NODETYPE & );
};
所以自己动手敲了一遍,留着以后学习。
在学校时学过一边《数据结构》,可是那会儿没理解,也没使用过复杂的。那会儿只是把它当成
名词解释背的,为的就是“分数”!现在想想实在是可悲!其实这些例子上学那会儿就看过了,当
时觉得很明了,很简单,觉得没必要自己动手。可是今天用到的时候却卡壳了,看来好记心真不
如烂笔头啊!
#include <iostream>
#include <iomanip>
#include <assert.h>
using namespace std;
//
//class ListNode
//
template< class NODETYPE > class List;
template< class NODETYPE >
class ListNode
{
friend class List< NODETYPE >;
public:
ListNode( const NODETYPE & );
NODETYPE getData() const;
private:
NODETYPE data;
ListNode< NODETYPE >* nextPtr;
};
template< class NODETYPE >
ListNode< NODETYPE >::ListNode( const NODETYPE & d) : data(d),nextPtr(0)
{
}
template< class NODETYPE >
NODETYPE ListNode< NODETYPE >::getData() const
{
return data;
}
///
//class List
///
template< class NODETYPE >
class List
{
public:
List();
~List();
void insertAtFront( const NODETYPE & );
void insertAtBack( const NODETYPE & );
bool removeAtFront( NODETYPE & );
bool removeAtBack( NODETYPE & );
bool isEmpty() const;
void print() const;
private:
ListNode< NODETYPE >* firstPtr;
ListNode< NODETYPE >* lastPtr;
ListNode< NODETYPE >* getNewNode( const NODETYPE & );
};