四、(4)队列---链队
程序员文章站
2024-03-24 18:55:04
...
链队的链式存储结构:
typedef struct QNode{
QElemType data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
QueuePtr front; //队头指针
QueuePtr rear; //队尾指针
}LinkQueue;
(1)链队初始化:
Status InitQueue(LinkQueue &Q)
{
Q.front=Q.rear=new QNode; //生成新结点作为头结点,队头和队尾指针指向此结点
Q.front->next=NULL; //头结点的指针域置空
return true;
}
(2)链队入队:
Status EnQueue(LinkQueue &Q,QElemType e)
{
QNode *p=new QNode;
p->data=e;
p->next=NULL;
Q.rear->next=p; //将新结点插入到队尾
Q.rear=p; //修改队尾指针
return true;
}
(3)链队出队:
Status DeQueue(LinkQueue &Q,QElemType &e)
{
if(Q.front==Q.rear)
{
return false;
}
p=Q.front->next; //p指向队头
e=p->data;//回收站
Q.front->next=p->next; //修改头指针
if(Q.rear==p)
{
Q.rear=Q.front; //最后一个元素被删,队尾指针指向头结点
}
delete p;
return true;
}
(4)取队头元素:
QElemType GetHead(LinkQueue Q)
{
if(Q.front!=Q.rear)
{
return Q.front->next->data; //返回对头元素的值
}
}
上一篇: iOS 自动化测试(XCTest, UITests)
下一篇: 2020最新Java面试题总结