typedef int Elemtype;
struct quenode
{
Elemtype data;
quenode *next;
};
class LsQueue
{
private:
quenode *front;
quenode *rear;
public:
LsQueue();
~LsQueue();
int IsEmpty();
void Display();
void AddQ(Elemtype x);
Elemtype DelQ();
Elemtype GetFront();
}
LsQueue::LsQueue()
{
quenode *p;
p = new quenode;
p->next = NULL;
front = rear = p;
}
LsQueue::~LsQueue()
{
quenode *p;
if(front->next !=NULL)
{
p = front->next;
while (p != NULL)
{
front->next = p->next;
delete p;
p = front->next;
}
delete front;
delete rear;
rear = front = NULL;
}
}
int LsQueue::IsEmpty()
{
if (front == rear)
return 1;
else
return 0;
}
Elemtype LsQueue::GetFront()
{
Elemtype x;
quenode *p;
if (front == rear)
{
cout << "\n Queu Is Empty " << endl;
x = -1;
}
else
{
p = front->next;
x = p->data;
}
return x;
}
void LsQueue::AddQ(Elemtype x)
{
quenode *s;
s = new quenode;
s->data = x;
s->next = NULL;
rear->next = s;
rear = s;
}
Elemtype LsQueue::DelQ()
{
Elemtype x;
quenode *p;
if (front == rear)
{
cout << "\n 队列为空" << endl;
x = -1;
}
else
{
p = front->next;
front->next = p->next;
if (p->next == NULL)
rear = front;
x = p->data;
delete p;
}
return x;
}
void LsQueue::Display()
{
quenode *p;
p = front->next;
while (p !=NULL)
{
cout << "\n 元素:" << p->data << endl;;
p = p->next;
}
cout << "结束" << e
}
int main()
{
Elemtype e;
LsQueue Q;
cout << "\n 队列链式存储结构演示";
cout << "进队 data= ?"; cin >> e;
Q.AddQ(e);
Q.Display();
e = Q.DelQ();
Q.Display();
std::cout << "Hello World!\n";
}