源代码:
#include<iostream>
#include<malloc.h>
using namespace std;
typedef int elemtype;
typedef struct node
{
elemtype data;
struct node *next;
}node,*linklist;
//链接队列初始化
void init(linklist &front,linklist &rear)
{
if(front==NULL&&rear==NULL)
cout<<"队列初始化成功"<<endl;
else
cout<<"队列初始化失败"<<endl;
}
//测试链接队列是否为空
void empty(linklist &front)
{
if(front==NULL)
cout<<"队列为空!"<<endl;
else
cout<<"队列非空!"<<endl;
}
//链接队列的插入
void push(linklist &front,linklist &rear)
{
elemtype item;
linklist p;
while(cin>>item)
{
if(item==-1)
break;
else
{
p->data = item;
p->next = NULL;
if(front == NULL)
front = p;
else
rear->next = p;
rear = p;
}
}
}
//取当前队头的元素
void gettop(linklist front)
{
elemtype item;
if(front==NULL)
cout<<"队列为空!"<<endl;
else
{
item = front->data;
cout<<"队头元素为:"<<item<<endl;
}
}
void pop(linklist &front)
{
elemtype item;
linklist p;
if(front==NULL)
cout<<"队列为空!"<<endl;
else
{
p = front;
item = p->data;
front = front->next;
free(p);
cout<<item<<endl;
}
}
//销毁队列
void des(linklist &front,linklist &rear)
{
while(front)
{
rear = front->next;
free(front);
front = rear;
}
}
int main()
{
linklist front=NULL,rear=NULL;
//链接队列初始化
cout<<"链接队列初始化!"<<endl;
init(front,rear);
//测试链接队列是否为空
cout<<endl<<"测试队列是否为空!"<<endl;
empty(front);
//链接队列的插入
cout<<endl<<"队列的插入,以-1为插入结束标志!"<<endl<<"插入元素为:";
push(front,rear);
//取当前队头的元素
cout<<endl<<"取当前队头的元素!"<<endl;
gettop(front);
//链接队头的删除
cout<<endl<<"链接队头的删除!"<<endl;
pop(front);
empty(front);
//销毁队列
cout<<endl<<"销毁队列"<<endl;
des(front,rear);
return 0;
}
运行结果: