C语言实现顺序存储结构的循环链表
来源:互联网 发布:mac pro 必备软件 编辑:程序博客网 时间:2024/05/19 11:50
SqQueue.h
////////////////////////////////////////////////////////////////////用顺序存储结构表示的循环队列/////////////////////////////////////////////////////////////////#ifndef _SQQUEUE_H_#define _SQQUEUE_H_#define MAXQSIZE 100//最大队列长度typedef int QElemType;typedef struct{QElemType *base;//初始化的动态分配存储空间int front;//头指针,若队列不空,指向队列头元素int rear;//尾指针,若队列不空,指向队列尾元素的下一个位置}SqQueue;bool InitQueue(SqQueue *Q);//初始化一个队列bool DestroyQueue(SqQueue *Q);//销毁一个队列bool ClearQueue(SqQueue *Q);//清空一个队列bool QueueEmpty(SqQueue Q);//判断队列是否为空unsigned int QueueLength(SqQueue Q);//返回队列的长度bool GetHead(SqQueue Q, QElemType *e);//获取队列头元素bool EnQueue(SqQueue *Q, QElemType e);//在队列中插入元素bool DeQueue(SqQueue *Q, QElemType *e);//在队列中删除元素#endif
SqQueue.cpp
#include <stdio.h>#include <stdlib.h>#include "SqQueue.h"//构造一个新队列bool InitQueue(SqQueue *Q){Q->base = (QElemType *)malloc(MAXQSIZE * sizeof(QElemType));if(NULL == Q->base){printf("error malloc!");return false;}Q->front = Q->rear = 0;return true;}//销毁一个队列bool DestroyQueue(SqQueue *Q){if(NULL == Q->base){printf("Invalid queue!");return false;}free(Q->base);Q->base = NULL;Q->front = Q->rear = 0;return true;}//清空一个队列bool ClearQueue(SqQueue *Q){if(NULL == Q->base){printf("Invalid queue!");return false;}Q->front = Q->rear = 0;return true;}//判断队列是否为空bool QueueEmpty(SqQueue Q){if(NULL == Q.base){printf("Invalid queue!");return false;}return (Q.front == Q.rear ? true : false);}//返回队列中元素的个数unsigned int QueueLength(SqQueue Q){if(NULL == Q.base){printf("Invalid queue!");return 0;}return (Q.rear - Q.front + MAXQSIZE) % MAXQSIZE;}//获取队列头元素bool GetHead(SqQueue Q, QElemType *e){if(NULL == Q.base){printf("Invalid queue!");return false;}*e = Q.base[Q.front];return true;}//在队列中插入元素bool EnQueue(SqQueue *Q, QElemType e){if(NULL == Q->base){printf("Invalid queue!");return false;}if((Q->rear + 1) % MAXQSIZE == Q->front){printf("Full queue!");return false;}Q->base[Q->rear++] = e;if(Q->rear == MAXQSIZE)Q->rear = 0;//也可以写成下式/*Q->base[Q->rear] = e;Q->rear = (Q->rear + 1) % MAXQSIZE;*/return true;}//在队列中删除元素bool DeQueue(SqQueue *Q, QElemType *e){if(QueueEmpty(*Q))return false;*e = Q->base[Q->front++];if(Q->front == MAXQSIZE)Q->front = 0;//也可以写成下式/**e = Q->base[Q->front];Q->front = (Q->front + 1) % MAXQSIZE;*/return true;}
0 0
- C语言实现顺序存储结构的循环链表
- 线性表的顺序存储结构的c语言实现
- 顺序存储结构线性表的C语言实现
- 用C语言实现线性表的顺序存储结构
- 线性表顺序存储结构的c语言实现
- 线性表的顺序存储结构(C语言实现)
- 循环队列-顺序存储-c语言实现
- 栈-顺序存储结构(C语言实现)
- 数据结构--C语言实现栈的顺序存储结构
- C语言实现线性表之顺序存储结构操作
- 线性表-顺序存储结构(C语言实现)
- 顺序存储链表 C语言实现
- 栈的顺序存储结构C语言
- 线性表的顺序存储结构的常见操作(C语言代码实现)
- 线性表的顺序存储结构(c语言源码实现)
- 顺序循环队列的c语言实现
- 循环队列-链式存储结构-c语言实现
- 循环队列的顺序存储结构及实现
- maven可用国内镜像 阿里云 飞速下载
- Android学习27
- PAT-A-1002. A+B for Polynomials
- 学习笔记:Android SQLite,并实现SQLite基本CRUD操作的Demo
- Android磨砂图片处理(FastBlur)
- C语言实现顺序存储结构的循环链表
- 剑指offer 面试题27 二叉搜索树与双向链表
- 关于sqlite3数据库文件格式的分析
- 内存管理机制 Thread 1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT)错误
- Ceph实战入门系列(三)——块设备-OpenStack
- Android学习28
- 尚硅谷学习笔记----声明式验证
- UIImage 读取修改像素颜色
- MAD