建设链式队列算法库,我采用了多文件系统的方式,将程序分为三个部分,头文件、源程序、主函数。

头文件:

/*Copyright (c) 2015,烟台大学计算机与控制工程学院All righs reserved文件名称:litack.h作者: 李哲完成日期:2015年10月14日问题描述:建设链式队列算法库程序说明:头文件*/#ifndef LIQUEUE_H_INCLUDED
#define LIQUEUE_H_INCLUDEDtypedef 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_INCLUDED

源程序:

/*Copyright (c) 2015,烟台大学计算机与控制工程学院All righs reserved文件名称:litack.h作者: 李哲完成日期:2015年10月14日问题描述:建设链式队列算法库程序说明:源代码*/#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;
}

主函数:

/*Copyright (c) 2015,烟台大学计算机与控制工程学院All righs reserved文件名称:litack.h作者: 李哲完成日期:2015年10月14日问题描述:建设链式队列算法库程序说明:主函数*/#include <stdio.h>
#include "liqueue.h"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);return 0;
}

运行结果:

至此链式队列算法库建设完成,如有不足,敬请指正。

*第七周*数据结构实践项目二【建设链式队列算法库】相关推荐

  1. 第十六周上机实践—项目2—大数据集上排序算法性能的体验

    /* *Copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者:林莉 *完成日期:2015年12月18日 *版本:v1 ...

  2. 第十二周实践项目一--图及存储结构算法库

    代码: 1.头文件:graph.h,包含定义图数据结构的代码.宏定义.要实现算法的函数的声明: <span style="font-size:12px;">#ifnde ...

  3. 第5周实践项目1 顺序栈建立的算法库

    main.cpp #include <stdio.h> #include "Sqstack.h" int main() {Elemtype e;SqStack *s;p ...

  4. c语言定义链式队列用菜单,数据结构之---C语言实现链式队列

    //链式队列的存储 //杨鑫 #include #include typedef int QElemType; //定义节点 typedef struct QNode { QElemType data ...

  5. 数据结构上机实践第七周项目2 - 自建算法库——链队(链式队列)

    自建算法库--链队(链式队列) 实现源代码如下: 1.liqueue.h /* copyright (t) 2016,烟台大学计算机学院 *All rights reserved. *文件工程名称:1 ...

  6. 数据结构上机实践第八周项目2- 建立链串的算法库

    建立链串的算法库 一般每一种数据结构都不会局限于在连续空间内的存取,那我们的串自然也不反常,本次实践将建立链串的算法库,应用于有需求的工程当中,提高程序的容错性. 本次实践依然会用到多文件组织工程的建 ...

  7. 第七周--数据结构--队列数组

     /*    *第七周--数据结构--队列数组     *Copyright (c) 2015 烟台大学计算机与控制工程学院    *All right reserved.    *文件名称:li ...

  8. [数据结构实践项目]变态的停车场管理系统

    [数据结构实践项目]变态的停车场管理系统 项目简介 设停车场是一个可以停放 n 辆汽车的南北方向的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在 ...

  9. 数据结构之线性表——(二、链式存储结构)[c语言]

    数据结构之线性表--(二.链式存储结构-单链表) 链式存储结构以及基本运算的实现 背景:由于线性表的存储特点是用物理上的相邻实现逻辑上的相邻,他要求用连续的存储单元顺序存储线性表中的各个元素,所以,对 ...

  10. 数据结构与算法实验 实验6:二叉树ADT的二叉链式实现 (由完全前序序列创建二叉树 / 求二叉树的节点数/树高/叶子节点数 /先序中序后序层序遍历)

    假设二叉数的数据元素为字符,采用二叉链式存储结构.请编码实现二叉树ADT,其中包括创建二叉树.遍历二叉树(深度.广度).求二叉树的深度(高度).计算二叉树的元素个数.计算二叉树的叶子数.二叉树的格式输 ...

最新文章

  1. 说实话,DataGrip真得牛逼,只是你不会用而已~
  2. .NET架构小技巧(7)——做好小的项目
  3. 5、使用Libgdx设计一个简单的游戏------雨滴
  4. caffe的python接口学习(4):mnist实例---手写数字识别
  5. 推荐几个对编程有帮助的游戏
  6. cahrt框架 ios_iOS-Charts介绍
  7. 题解1205汉诺塔问题
  8. php 增加空行,php 替换空行 不匹配空行
  9. 人工智能专业应不应该读博士?
  10. Docker---(7)Docker安装启动RabbitMQ
  11. 互联网家装,风口下飞不起来的“猪”
  12. Java霸王的大陆梦幻版_三国志霸王的大陆,喜欢三国的进
  13. 第一次vscode 推送已有代码 到gitee新仓库
  14. void* to ULONG
  15. java 获取百度云盘图片_java 利用百度云识别图片文字
  16. 详解爬电距离和电气间隙
  17. 华为无线设备配置利用WDS技术部署WLAN业务
  18. 【VScode】搜索栏语法
  19. LearningSpark9:SparkSQL
  20. 计算年year、月month和日day对应的是该年的第几天

热门文章

  1. Java网络编程从入门到精通(15):为什么要使用SocketAddress来管理网络地址
  2. [蛋蛋四格漫画]-贺沪江日语四周年版庆
  3. poj 2352 Stars 树状数组
  4. Downie 4搭配Permute 3,一个完整的视频下载处理流
  5. linux学习之使用fdisk命令进行磁盘分区(八)
  6. c#简易学生信息管理系统
  7. 搭建Typescript+React项目模板(5) --- 团队规范
  8. spring的设计模式
  9. Mcafee EPO数据库过大
  10. Spring概况(一)