📄 lqueue.h
字号:
//LQueue.h
template <class Elem>
class Link
{
public:
Link* next;
Elem element;
Link(Link<Elem>* nextValue = 0)
{
next = nextValue;
}
Link(const Elem& eValue,Link<Elem>* nextValue = NULL)
{
element = eValue;
next = nextValue;
}
};
template <class Elem>
class LQueue
{
private:
Link<Elem>* head;
Link<Elem>* rear;
int size;
public:
LQueue(int sz)
{
head = rear = 0;
size = 0;
}
~LQueue()
{
Clear();
}
void Clear()
{
// while(Pop());
//用另一种代码形式写,争强链表操作能力
//可以不申请一个零时变量temp,use the point of rear;
// Link<Elem>* temp;
while(head != 0)
{
rear = head;
// temp = head;
head = head->next;
delete head;
}
}
bool Push(const Elem& it)
{
//数上的一种代码形式为:
if(head == 0)
{
head = rear = new Link<Elem>(it,0);
}
else
{
rear->next = new Link<Elem>(it,0);
rear = rear->next;
}
size++;
return true;
}
bool Front(Elem& it)
{
if(rear == 0)
return false;
it = head->element;
return true;
}
Elem Front()const
{
if(rear == 0)
return (Elem)0;
return head->element;
}
bool Pop()
{
if(rear == 0)
return false;
//书上的代码
/* if(size == 1)
{
delete head;
head = rear = 0;
size--;
return true;
}
Link<Elem>* temp = head->next;
delete head;
head = temp;
size--;*/
Link<Elem>* temp = head;
head = head->next;
delete temp;
if(head == 0)
{
rear = 0;
}
size--;
return true;
}
bool Empty()const
{
if(head == 0)
return true;
return false;
}
int Size()const
{
return size;
}
bool Back(Elem& it)
{
if(head == 0)
return false;
it = rear->element;
return true;
}
Elem Back()const
{
if(head == 0)
return (Elem)0;
return rear->element;
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -