博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构基础——链队列
阅读量:3937 次
发布时间:2019-05-23

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

链队列的基本操作

#include
#include
#define OK 1#define ERROR -1typedef int QElemType;typedef int Status;typedef struct QNode{
QElemType data; struct QNode *next;}QNode;typedef QNode* QueuePtr;typedef struct {
QueuePtr front;/*头指针*/ QueuePtr rear;/*尾指针*/}LinkQueue;/*队列的链式存储*//* *初始化链队Q */Status InitQueue(LinkQueue *Q){
(*Q).front = (*Q).rear = (QueuePtr)malloc(sizeof(QNode)); if(!(*Q).front) exit(0); (*Q).front->next = NULL; return OK;}/* *置空链队Q */void ClearQueue(LinkQueue *Q){
(*Q).rear = (*Q).front->next; while ((*Q).rear) {
(*Q).front->next = (*Q).rear->next; free((*Q).rear); (*Q).rear = (*Q).front->next; } (*Q).rear = (*Q).front;}/* *销毁链队Q */void DestroyQueue(LinkQueue *Q){
while ((*Q).front) {
(*Q).rear = (*Q).front->next; free((*Q).front); (*Q).front = (*Q).rear; }}/* *判断链队Q是否为空 */Status QueueEmpty(LinkQueue Q){
if(Q.front==Q.rear) return true; else {
return false; }}/* *返回链队Q的元素个数 */Status QueueLength(LinkQueue Q){
int count = 0; QueuePtr p = Q.front; while(p!=Q.rear) {
count++; p = p->next; } return count;}/* *获取链队Q的队头元素 */Status GetHead_Queue(LinkQueue Q,QElemType *e){
QueuePtr p; if (Q.front==Q.rear) {
return ERROR; } p = Q.front->next; *e = p->data; return OK;}/* *元素e入队 */Status In_Queue(LinkQueue *Q,QElemType e){
QueuePtr p; p = (QueuePtr)malloc(sizeof(QNode)); if(!p) exit(0); p->data = e; p->next = NULL; (*Q).rear->next = p; (*Q).rear = p; return OK;}/* *元素e出队 */Status Out_Queue(LinkQueue *Q,QElemType *e){
QueuePtr p; if((*Q).front==(*Q).rear) return ERROR; p = (*Q).front->next; *e = p->data; (*Q).front->next = p->next; if((*Q).rear==p) (*Q).rear = (*Q).front; free(p); return OK;}/* *访问队列 */void QueueTraverse(LinkQueue Q,void(Visit)(QElemType)){
QueuePtr p; p = Q.front->next; while (p) {
Visit(p->data); p = p->next; }}```

转载地址:http://lwywi.baihongyu.com/

你可能感兴趣的文章
hp DL338服务器修改ilo管理地址
查看>>
vmware convert P2V 错误二三事
查看>>
让kali2020中的zsh有补完功能
查看>>
python解开压缩文件6位纯数字密码
查看>>
5620系列密码清除
查看>>
vncsever-centos&debian
查看>>
华为snmp模板
查看>>
华为wlan模板
查看>>
kvm&xen挂载镜像文件
查看>>
华为路由器配置NAT使内网用户通过外网IP地址方式访问内网服务器示例
查看>>
virt命令
查看>>
15个保障服务器安全的方法:
查看>>
在VMware Workstation 中部署VCSA6.5
查看>>
openstack&ceph
查看>>
ME60 双机热备 奇偶mac负载分担
查看>>
oracle11G安装en
查看>>
关于丢失或者损坏etc/fstab文件后
查看>>
VMware-ESXi-6.5 集成第三方驱动方法
查看>>
Oracle RAC on vSphere 安装手册v2
查看>>
V2V迁移
查看>>