队列的链式结构

源代码:
 

#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;
}

运行结果: