天天看点

链队列的初始化、入队、出队等操作实现

链队列的初始化、入队、出队等基本操作实现代码如下:

#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);//释放存储空间