哟~终于出差回来了
又可以继续瞎搞了
hiahiahiahiahiahiahia~
——————————————下面是正文———————————————
一.队列的定义
队列的定义十分简单,之所以称之为队列,既是因为数据集在操作过程中就像队列一样,先进来的数据先进行处理,专业词语唤做:先进先出(First In First Out)原则,在数据进行删除时是从后来的数据进行删除,而可以将数据插入队列的一端我们称之为队头,可以将数据移出去的一端我们称之为队尾,所以,概括起来队列的定义是:一种头进从尾出的线性数据结构。
二.队列的数据集和操作集
对于抽象数据类型来说,每一种数据结构都有自己的数据集以及操作集,队列的数据集通常是一个装载数据的容器(如线性表的数组、链表和循环队列等)再加上记录队列头和队列尾的容器。在C++的库文件里面,有一个专门用作于队列的库文件,头文件名为: #include <queue>,在主函数里使用时可以酱定义:std::queue<数据类型> 类名。当然,以下内容并未直接使用C++提供的库,而是本人自己写的一个简陋的队列代码,以下提供本人的数据集以及操作集:
数据集代码段如下:
struct LNode
{
type Data[100];
int* fornt;
int* back;
};
操作集因人而异,本人的操作集如下:
template<class type>
class Linear_Queue
{
public:
Linear_Queue();
~Linear_Queue();
public:
void CreatQueue(type* Data,type SIZE); //往队列里面填充数据
void QueueCount();//计数
void IsFullQueue(); //判断队列是否为空
void AddElement(type Element);//添加一个值
void DeleteElement(int number);//从表头开始删除number个数据
}
三.代码分析
3.1.数据集
数据集简单明了,直接申请一块结构体大小的内存即可,在析构函数记得将申请的内存删除即可:
template<class type>
Linear_Queue<type>::Linear_Queue()
{
Node = new LNode;
}
template<class type>
Linear_Queue<type>::~Linear_Queue()
{
delete Node;
}
3.2.将数据塞进队列里
template<class type>
void Linear_Queue<type>::CreatQueue(type* Data,type SIZE)
{
IsFullQueue();
for (int i = 0; i < SIZE; i++)
{
Node->Data[i] = *(Data + i);
count++;
Node->fornt = Node->Data;
Node->back = Node->Data + i;
//printf("Data[%d] = %d\n", i, Node->Data[i]);
//printf("%d\n", Node->back);
//printf("%d\n", *(Node->Data + i));
}
this->SIZE = SIZE;
}
3.3.增加或者删除数据
template<class type>
void Linear_Queue<type>::AddElement(type Element)
{
IsFullQueue();
Node->Data[this->SIZE] = Element;
Node->back = Node->Data + this->SIZE;
this->SIZE += 1;
count++;
printf("The fornt is %d\nThe back is %d\n", *(Node->fornt), *(Node->back));
}
template<class type>
void Linear_Queue<type>::DeleteElement(int number)
{
IsFullQueue();
Node->fornt = Node->Data+number;
printf("The fornt is %d\nThe back is %d\n", *(Node->fornt),*(Node->back));
}
3.4.查询当前队列存有多少个数据
template<class type>
void Linear_Queue<type>::QueueCount()
{
printf("%d\n", count);
}
3.5.查询队列是否为空
template<class type>
void Linear_Queue<type>::IsEmptyQueue()
{
if (Node->fornt == Node->back)
printf("The Queue is Empty!!\n");
else
printf("The Queue is not Empty!!\n");
}