第七周项目2—建立链队算法库
来源:互联网 发布:人工智能 教育风口 编辑:程序博客网 时间:2024/06/08 04:00
/* * Copyright (c) 2017,烟台大学计算机学院 * All right reserved. * 文件名称:main.cpp * 作者:王华慧 * 完成日期:2017年10月24日 * 版本号:v1.0 * * 问题描述:建立链队算法库 * 输入描述:标准函数输入 * 程序输出:标准函数输出 */
链队算法库采用程序的多文件组织形式
liqueue.h存放函数头文件
#ifndef LIQUEUE_H_INCLUDED #define LIQUEUE_H_INCLUDED typedef char ElemType;typedef struct qnode{ElemType data;struct qnode *next;} QNode; //链队数据结点类型定义 typedef struct{QNode *front;QNode *rear;} LiQueue; //链队类型定义 void InitQueue(LiQueue *&q); //初始化链队 void DestroyQueue(LiQueue *&q); //销毁链队 bool QueueEmpty(LiQueue *q); //判断链队是否为空 int QueueLength(LiQueue *q); //返回队列中数据元素个数 void enQueue(LiQueue *&q, ElemType e); //入队 bool deQueue(LiQueue *&q, ElemType &e); //出队 #endif // LIQUEUE_H_INCLUDE
liqueue.cpp 存放函数定义
#include <stdio.h> #include <malloc.h> #include "liqueue.h" void InitQueue(LiQueue *&q) //初始化链队 {q = (LiQueue *)malloc(sizeof(LiQueue));q->front = q->rear = NULL;}void DestroyQueue(LiQueue *&q) //销毁链队 {QNode *p = q->front, *r; //p指向队头数据节点 if (p != NULL) //释放数据节点占用空间 {r = p->next;while (r != NULL){free(p);p = r;r = p->next;}}free(p);free(q); //释放链队节点占用空间 }bool QueueEmpty(LiQueue *q) //判断链队是否为空 {return(q->rear == NULL);}int QueueLength(LiQueue *q) //返回队列中数据元素个数 {int n = 0;QNode *p = q->front;while (p != NULL){n++;p = p->next;}return(n);}void enQueue(LiQueue *&q, ElemType e) //入队 {QNode *p;p = (QNode *)malloc(sizeof(QNode));p->data = e;p->next = NULL;if (q->rear == NULL) //若链队为空,则新节点是队首节点又是队尾节点 q->front = q->rear = p;else{q->rear->next = p; //将*p节点链到队尾,并将rear指向它 q->rear = p;}}bool deQueue(LiQueue *&q, ElemType &e) //出队 {QNode *t;if (q->rear == NULL) //队列为空 return false;t = q->front; //t指向第一个数据节点 if (q->front == q->rear) //队列中只有一个节点时 q->front = q->rear = NULL;else //队列中有多个节点时 q->front = q->front->next;e = t->data;free(t);return true;}
main.cpp 存放函数主函数
#include <stdio.h> #include "liqueue.h" #include <iostream>int main(){ElemType e;LiQueue *q;printf("(1)初始化链队q\n");InitQueue(q);printf("(2)依次进链队元素a,b,c\n");enQueue(q, 'a');enQueue(q, 'b');enQueue(q, 'c');printf("(3)链队为%s\n", (QueueEmpty(q) ? "空" : "非空"));if (deQueue(q, e) == 0)printf("队空,不能出队\n");elseprintf("(4)出队一个元素%c\n", e);printf("(5)链队q的元素个数:%d\n", QueueLength(q));printf("(6)依次进链队元素d,e,f\n");enQueue(q, 'd');enQueue(q, 'e');enQueue(q, 'f');printf("(7)链队q的元素个数:%d\n", QueueLength(q));printf("(8)出链队序列:");while (!QueueEmpty(q)){deQueue(q, e);printf("%c ", e);}printf("\n");printf("(9)释放链队\n");DestroyQueue(q);system("pause");return 0;}
运行结果
阅读全文
0 0
- 第七周—项目2 - 建立链队算法库
- 第七周项目2—建立链队算法库
- 第七周项目2—建立链队算法库
- 第七周项目2—建立链队算法库
- 第七周项目2—建立链队算法库
- 第七周项目2—建立链队算法库
- 第七周项目2—建立链队算法库
- 第七周项目2—建立链队算法库
- 第七周项目2-建立链队算法库
- 第七周--项目2建立链队算法库
- 第七周项目2 - 建立链队算法库
- 第七周 项目2 - 建立链队算法库
- 第七周项目(2):建立链队算法库
- 第七周 项目2 建立链队算法库
- 第七周 项目2 建立链队算法库
- 第七周-项目2 - 建立链队算法库
- 第七周 项目2-建立链队算法库
- 第七周 项目2-建立链队算法库
- 麻将简单胡牌算法
- 车辆管理系统
- 环境变量,mv命令,cp命令,几个查看文件的命令
- 最实用的Git 教程
- 文章标题
- 第七周项目2—建立链队算法库
- jquery实现弹框,背景变黑
- PHP正则表达式
- 测试httpclient时,报 406错误的解决方法(临时解决)
- 函数参数传递
- 找到与众不同的那个小球(C语言)
- LeetCode刷题(21)
- linux 基础学习4
- Ubuntu安装tplink wn822n网卡驱动