链队列的初始化、入队、出队等基本操作实现代码如下:
#include<iostream>
using namespace std;
#define true 1
#define false 0
//链队列定义
typedef struct node
{
int data;//数据域
struct node *next;//指针域
}linkqueuenode;
typedef struct
linkqueuenode *front;//队头指针front
linkqueuenode *rear;//队头指针rear
}linkqueue;
//将q初始化为一个空的链队列
int initqueue(linkqueue *q)
q->front = (linkqueuenode *)malloc(sizeof(linkqueuenode));
if (q->front != null)
q->rear = q->front;
q->front->next = null;
return true;
}
else
return false;//溢出
//将数据元素x插入到队列q中
int enterqueue(linkqueue *q,int x)
linkqueuenode *newnode;
newnode = (linkqueuenode *)malloc(sizeof(linkqueuenode));
if (newnode != null)
newnode->data=x;
newnode->next = null;
q->rear->next = newnode;
q->rear = newnode;
//将队列q的队头元素出队,并存放到x所指的存储空间中
int deletequeue(linkqueue *q, int *x)
linkqueuenode *p;
if (q->front == q->rear)
return false;
p = q->front->next;
q->front->next = p->next;//队头元素p出队
if (q->rear==p)//如果队中只有一个元素p,则p出队后成为空队
q->rear= q->front;
*x = p->data;
free(p);//释放存储空间