#include "stdafx.h"
#include <iostream>
using namespace std;
typedef struct Node
{
int iData;
Node* next;
}QNode,*QLink;
// 创建一个链式队列;
QLink Creat(int n)
{
QLink p = NULL;
QLink head = NULL,rear;
cout << "请给链接点进行初始化:" << endl;
int iNumber = 0;
for (int i = 0;i < n;++ i)
{
cin >> iNumber;
p = new QNode;
p->iData = iNumber;
p->next = NULL;
if (head == NULL)
{
head = p;
}
else
{
rear->next = p;
}
rear = p;
}
return head;
}
// 初始化一个链式队列
void InitialQLink(QLink& head,QLink& rear)
{
head = rear = NULL;
}
// 测试一个队列是否为空
bool IsEmpty(QLink& head)
{
return head == NULL;
}
// 取出当前队列头部的元素;
int GetHeadLink(QLink& head,int& item)
{
if (IsEmpty(head))
{
return 0; // 队列为空,操作失败,返回0;
}
item = head->iData;
return 1;
}
// 连接队列的插入;
int AddQLink(QLink& head,QLink& rear,int item)
{
QLink p = NULL;
if (!(p = new QNode))
{
return 0;
}
p->iData = item;
p->next = NULL;
if (head == NULL)
{
head = p;
}
else
{
rear->next = p;
}
rear = p;
return 1;
}
// 链式队列的删除操作;
int DeleteQLink(QLink& head,QLink& rear,int& item)
{
QLink p = NULL;
if (IsEmpty(head))
{
return 0;
}
else
{
p = head;
item = p->iData;
head = head->next;
delete p;
return 1;
}
return 0;
}
// 链式队列的销毁;
void DestroyQList(QLink& head,QLink& rear)
{
while(head)
{
rear = head->next;
delete head;
head = rear;
}
}
int main(int argc,char* argv[])
{
QLink head,rear;
InitialQLink(head,rear);
if (IsEmpty(head))
{
cout << "该队列为空!" << endl;
}
int add = 0;
cout << " 请输入你要添加到队列中的元素: " << endl;
cin >> add;
if (AddQLink(head,rear,add))
{
cout << "插入成功" << endl;
}
for (int i = 99;i < 105;++ i)
{
AddQLink(head,rear,i);
}
DeleteQLink(head,rear,add);
cout << "删除队列元素,可以通过第一个元素的值来判断是否正确!" << endl;
cout << add << endl;
DestroyQList(head,rear);
return 0;
}