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

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

ID:57189099

大小:16.00 KB

页数:5页

时间:2020-08-05

队列顺序存储操作的6种算法.doc_第1页
队列顺序存储操作的6种算法.doc_第2页
队列顺序存储操作的6种算法.doc_第3页
队列顺序存储操作的6种算法.doc_第4页
队列顺序存储操作的6种算法.doc_第5页
资源描述:

《队列顺序存储操作的6种算法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、#include #include typedef int elemType;/************************************************************************//*                      以下是关于队列顺序存储操作的6种算法               *//************************************************************************/struct queue{    elem

2、Type *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(elemT

3、ype));    /* 动态存储空间分配,若失败则退出运行 */    if(!p){        printf("空间分配失败!");        exit(1);    }    q->queue = p;        /* 使queue指向新的队列空间 */    /* 把原队列的尾部内容后移maxSize个位置 */    if(q->rear != q->maxSize -1){        int i;        for(i = 0; i <= q->rear; i++){            q->queue[i+q->maxSize]

4、 = 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 <= 0){        printf("ms值非法!");        

5、exit(1);    }    q->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(

6、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.从队列中删除元素并返回 

7、*/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.读取队首元素,不改变队列状

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。