//链队列的基本运算
public class LinkQueue {
//(1)置空队
void InitQueue(LinkQueue *Q){
Q->front=Q->rear=NULL;
}
//(2)判断空
intQueueEmpty(LinkQueue *Q){
return Q->front==NULL && Q->rear->rear==NULL;
}
//(3)入列
void EnQueue(LinkQueue *Q,DataType x){
//将元素X插入链队列尾部
QueueNode *p = (QueueNode*)malloc(sizeof(QueueNode));//申请新结点
p->data=x;
p->next=NULL;
if(QueueEmpty(Q)){
Q->front=Q->reap=p;//将P插入队列
}else{//将P插入非空队列
Q->rear->next=p;
Q->rear=p;
}
}
//(4)出列
DataType DeQueue(LinkQueue *Q){
DataType *x;
QueueNode *p;
if(QueueEmpty(Q)){//下溢
Error("Queue underflow");
}
p = Q->front;
x = p->data;
Q->front = p->next;
if(Q->rear=p){//列中只有一个结点
Q->rear=null;
}
free(p);//释放头结点
return x;//返回队头数据
}
//(5)取队头元素
DataType QueFront(LinkQuue *Q){
if(QueueEmpty(Q)){//下溢
Error("Queue underflow");
}
else{
return Q->front->data;
}
}
}
【数据结构之链队列的基本运算】
最新推荐文章于 2023-09-21 13:00:00 发布