• / 5
  • 下载费用:10 金币  

队列顺序存储操作的6种算法.doc

关 键 词:
队列顺序存储操作的6种算法.doc
资源描述:
#include #include typedef int elemType;/************************************************************************//* 以下是关于队列顺序存储操作的 6 种算法 *//************************************************************************/struct queue{elemType *queue; /* 指向存储队列的数组空间 */int front, rear, len; /* 队首指针(下标),队尾指针(下标),队列长度变量 */int maxSize; /* queue 数组长度 */};void againMalloc(struct queue *q){/* 空间扩展为原来的 2 倍,原内容被自动拷贝到 p 所指向的存储空间中 */elemType *p;p = realloc(q-queue, 2 * q-maxSize * sizeof(elemType));/* 动态存储空间分配,若失败则退出运行 */if(!p){printf(“空间分配失败! “);exit(1);}q-queue = p; /* 使 queue 指向新的队列空间 *//* 把原队列的尾部内容后移 maxSize 个位置 */if(q-rear != q-maxSize -1){int i;for(i = 0; i rear; i++){q-queue[i+q-maxSize] = q-queue[i];}q-rear += q-maxSize; /* 队尾指针后移 maxSize 个位置 */}q-maxSize = 2 * q-maxSize; /* 把队列空间大小修改为新的长度 */return;}/* 1.初始化队列 */void initQueue(struct queue *q, int ms){/* 检查 ms 是否有效,若无效则退出运行 */if(ms maxSize = ms; /* 置队列空间大小为 ms *//* 动态存储空间分配,若失败则退出运行 */q-queue = malloc(ms * sizeof(elemType));if(!q-queue){printf(“内存空间分配失败! “);exit(1);}q-front = q-rear = 0; /* 初始置队列为空 */return;}/* 2.向队列中插入元素 x */void enQueue(struct queue *q, elemType x){/* 当队列满时进行动态生分配 */if((q-rear + 1) % q-maxSize == q-front){againMalloc(q);}q-rear = (q-rear + 1) % q-maxSize; /* 求出队尾的下一个位置 */q-queue[q-rear] = x; /* 把 x 的值赋给新的队尾 */return;}/* 3.从队列中删除元素并返回 */elemType outQueue(struct queue *q){/* 若队列为空则终止运行 */if(q-front == q-rear){printf(“队列为空,无法删除! “);exit(1);}q-front = (q-front +1) % q-maxSize; /* 使队首指针指向下一个位置 */return q-queue[q-front]; /* 返回队首元素 */}/* 4.读取队首元素,不改变队列状态 */elemType peekQueue(struct queue *q){/* 若队列为空则终止运行 */if(q-front == q-rear){printf(“队列为空,无法删除! “);exit(1);}return q-queue[(q-front +1) % q-maxSize];/* 队首元素是队首指针的下一个位置中的元素 */}/* 5.检查一个队列是否为空,若是则返回 1,否则返回 0 */int emptyQueue(struct queue *q){if(q-front == q-rear){return 1;}else{return 0;}}/* 6.清除一个队列,并释放动态存储空间 */void clearQueue(struct queue *q){if(q-queue != NULL){free(q-queue);q-queue = NULL; /* 设置队
展开阅读全文
  微传网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:队列顺序存储操作的6种算法.doc
链接地址:https://www.weizhuannet.com/p-9503308.html
微传网是一个办公文档、学习资料下载的在线文档分享平台!

微传网博客

网站资源均来自网络,如有侵权,请联系客服删除!

 网站客服QQ:80879498  会员QQ群:727456886

copyright@ 2018-2028 微传网络工作室版权所有

     经营许可证编号:冀ICP备18006529号-1 ,公安局备案号:13028102000124

收起
展开