博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
队列的实现
阅读量:5811 次
发布时间:2019-06-18

本文共 2038 字,大约阅读时间需要 6 分钟。

1. 基本操作

操作 解释
MakeNull(Q) 将队列置空
Front(Q) 返回队列第一个元素
EnQueue(x,Q) 将元素插入Q的后端
DeQueue(Q) 删除第一个元素
Empty(Q) 为空返回TRUE

2. 队列的指针实现

struct celltype {        Elementtype element;        celltype *next;    };        struct QUEUE {        celltype *front;        celltype *rear;    };        void MakeNull(QUEUE &Q)    {        Q.front = new celltype;        Q.front->next = NULL;        Q.rear = Q.front;    }        boolean Empty(QUEUE Q)     {        if(Q.front == Q.rear)            return TRUE;        else            return FALSE;    }        void EnQueue(Elementtype x, QUEUE &Q)     {         Q.rear->next = new celltype;         Q.rear = Q.rear->next;         Q.rear->element = x;         Q.rear->next = NULL;     }        void DeQueue(QUEUE &Q)    {        celltype *tmp;        if(Empty(Q))            error("empty");        else        {            tmp = Q.front->next;            Q.front->next = tmp->next;            delete tmp;            if(Q.front->next == NULL)                Q.rear = Q.front;        }    }

3. 队列的数组实现

#define maxlength 100    typedef struct {        int front;        int rear;        Elementtype elements[maxlength];    } QUEUE;        int addone(int i )    {        return (i+1)%maxlength;    }        void MakeNull(QUEUE &Q)    {        Q.front = 0;        Q.rear = maxlength - 1;    }        boolean Empty(QUEUE Q)    {        if(addone(Q.rear) == Q.front)            return TRUE;        else            return FALSE;    }        Elementtype Front(QUEUE Q)    {        if(Empty(Q))            return NULL;        else            return Q.elemenmts[Q.front];    }        void EnQueue(elementtype x, QUEUE &Q)    {        if(addone(addone(Q.rear)) == Q.front)            error("queue is full");        else {            Q.rear = addone(Q.rear);            Q.elements[Q.rear] = x;        }    }        void DeQueue(QUEUE &Q)    {        if(Empty(Q))            error("queue is empty");        else            Q.front = addone(Q.front);    }

部分资料来自《数据结构与算法--张岩》

转载于:https://www.cnblogs.com/vachester/p/6682583.html

你可能感兴趣的文章
锐捷交换机密码恢复(1)
查看>>
Kali linux virtualbox rc=1908 错误解决办法
查看>>
linux软件包管理之三(源代码安装)
查看>>
数据库三范式是什么?
查看>>
[转载]设置Ubuntu自动连接无线,无须再输入密钥环和无线密码
查看>>
九叔Xen App测试报告
查看>>
Apache配置
查看>>
Ext gridPanel 单元格数据的渲染
查看>>
Android SDK 的下载代理
查看>>
Method Swizzling对Method的要求
查看>>
佛祖保佑,永不宕机
查看>>
四、配置开机自动启动Nginx + PHP【LNMP安装 】
查看>>
LNMP一键安装
查看>>
SQL Server数据库概述
查看>>
Linux 目录结构及内容详解
查看>>
startx命令--Linux命令应用大词典729个命令解读
查看>>
华为3026c交换机配置tftp备份命令
查看>>
Oracle命令导入dmp文件
查看>>
OCP读书笔记(24) - 题库(ExamD)
查看>>
Http、TCP/IP协议与Socket之间的区别(转载)
查看>>