2019年06月17日
阅读 639
评论 0
喜欢 0
- 链队是一个没有头结点的单链表, 它的front和rear都有具体元素。队空不是front==rear, 而是
rear==NULL,front==rear可能是只有一个元素。 - 存储结构就是在单链表的基础上加上一个结构体 LiQueue,内含两个指针 。
链队的存储结构
typedef int ElemType;
struct QNode {
ElemType data;
struct QNode *next;
};
struct LiQueue {
QNode *front;
QNode *rear;
};
初始化队列的算法
void InitQueue(LiQueue *&lqu) {
lqu=(LiQueue *)malloc(sizeof(LiQueue));
lqu->front=lqu->rear=NULL;
}
判断队空的算法
int QueueEmpty(LiQueue *lqu) {
return (lqu->rear==NULL);
}
进队的算法
void EnQueue(LiQueue *&lqu,ElemType x) {
QNode *p;
p=(QNode *)malloc(sizeof(QNode));
p->data=x;
p->next=NULL;
if(lqu->rear==NULL)
lqu->front=lqu->rear=p;
else {
lqu->rear->next=p;
lqu->rear=p;
}
}
出队的算法
int DeQueue(LiQueue *&lqu,ElemType &x) {
QNode *p;
if(lqu->rear==NULL)
return 0;
p=lqu->front;
if(lqu->front==lqu->rear) //队列中只有一个节点时
lqu->front=lqu->rear=NULL;
else
lqu->front=lqu->front->next;
x=p->data;
free(p);
return 1;
}
暂无评论