/*数据结构与算法-第三章栈和队列课后习题
*课本第85页3.6
*题目:假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意:不设头指针),
* 试编写相应的置空队列、判断队列是否为空、入队和出队等算法。
*编译环境:VC 6.0
*/
#include <stdio.h>
#include <stdlib.h>
#define ERROR 0
#define OK 1
#define OVERFLOW 0
typedef int qelemType;
typedef struct queue
{
qelemType data;
struct queue *next;
}queue,*linkqueue;
typedef struct
{
linkqueue rear;
int length;
}sqqueue;
void initQueue(sqqueue &queue)//置空队列
{
queue.rear=(linkqueue)malloc(sizeof(queue));
queue.rear->next=queue.rear;
}
int emptyQueue(sqqueue &queue)//判队列是否为空
{
if(queue.rear->next==queue.rear)
return OK;
else
return 0;
}
int enqueue(sqqueue &queue,qelemType e)
{
linkqueue p;
p=(linkqueue)malloc(sizeof(queue));
if(!p)
return OVERFLOW;
p->data=e;
p->next=queue.rear->next;
queue.rear->next=p;
queue.rear=p;
return OK;
}
int delqueue(sqqueue &queue,qelemType &e)
{
linkqueue p;
if(queue.rear->next==queue.rear)
return ERROR;//若队列为空
假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意:不设头指针),
最新推荐文章于 2023-03-25 12:24:59 发布