数据结构 --队列 --C实现.doc
文本预览下载声明
目录
TOC \o 1-3 \h \z \u HYPERLINK \l _Toc2258 一、 题目内容及要求 PAGEREF _Toc2258 3
HYPERLINK \l _Toc16140 二、 题目设计思路 PAGEREF _Toc16140 3
HYPERLINK \l _Toc5084 三、 类设计与类关系 PAGEREF _Toc5084 4
HYPERLINK \l _Toc7971 四、 主要功能函数流程图 PAGEREF _Toc7971 4
HYPERLINK \l _Toc20382 五、 运行结果及分析 PAGEREF _Toc20382 5
HYPERLINK \l _Toc14570 六、 总结 PAGEREF _Toc14570 6
题目内容及要求
1. 队列是一种连续的存储结构,存入数据只能从一端(称为尾部)进入,取出数据则只能从另一端(头部)取出。根据下述描述实现一个自定义的队列类:
template typename Type
struct LinkNode
{
Type data;
LinkNodeType *next;
LinkNode() : next(NULL)
{ }
LinkNode( const Type x,LinkNodeType *p=NULL ) : data(x),next(p)
{ }
};
template typename Type
class Queue
{
public:
Queue (); //构造函数
~Queue (); //析构函数
inline bool isEmpty () const; //队列是否为空
inline void makeEmpty(); //清空队列
inline void enqueue( const Type x ); //插入一个元素
inline void dequeue( Type x ); //弹出一个元素
inline void getFront( Type x); //得到对头元素
private:
LinkNodeType *front; //指向头结点的指针,front-next-data 是队头的第一个元素
LinkNodeType *rear; //指向队尾(最后添加的一个元素)的指针
inline void handleUnderflow(); //控制队列下溢
};
题目设计思路
queue.h文件
在queue.h头文件中使用命名空间itlab在其中声明:
模板结构体链表结点(struct LinkNode),其中包含的数据成员有:
①模板参数类类型Type 对应的data,存放模板实现类的具体数据,②LinkNodeType 模板类型结构体指针 next,用来指向下一个结点;
成员函数包括:
①LinkNode()无参构造函数,其中数据成员next默认为NULL,②LinkNode(const Type x,LinkNodeType *p = NULL),采用参数初始化表对数据成员初始化,其中第一个参数为常量Type类型的引用x,初始化数据成员data,第二个参赛为结构体类型指针p默认值为NULL,用来初始化数据成员next。
模板类队列(class Queue),包含的公共成员函数有:
①无参构造函数 Queue(),在定义对象时,由系统调用,完成对象的初始化;
②析构函数~Queue(),与构造函数相反,是在撤销对象占用内存前进行一些清理工作。可以被用来执行“用户希望在最后一次使用对象之后所执行的任何操作”;
③内联函数判断队列是否为空,返回值为布尔类型常量,inline bool isEmpty() const;
④内联函数清空队列,无返回值,inline void makeEmpty();
⑤内联函数向队列中插入一个元素,inline void enqueue(const Type x),参数为Type类型常量,插入的新元素作为队列中的队尾结点;
⑥内联函数从队列中弹出一个元素, inline void dequeue( Type x ),无返回值,但传入参数为Type类型的引用x,从对首取出结点元素的数据,将其赋值给x,实现函数值的返回;
⑦内联函数得到对首元素结点的数据,inline void getFront( Type x),同样采用函数参数
显示全部