当前位置: 首页 > news >正文

网站建设规划书的制作软件编程培训学校排名

网站建设规划书的制作,软件编程培训学校排名,网页加速器浏览器,自己做网站怎么上传文章目录Queue.hmain.cQueue.c用队列实现一个图书信息管理#xff0c;这里放一下有哪些文件。#xff08;ps#xff1a;我之前写的是学生信息管理#xff0c;但是有人说我们的作业是写图书#xff0c;就该了下内容#xff0c;没有改文件名#xff09;队列是用链表实现的… 文章目录Queue.hmain.cQueue.c用队列实现一个图书信息管理这里放一下有哪些文件。ps我之前写的是学生信息管理但是有人说我们的作业是写图书就该了下内容没有改文件名队列是用链表实现的因为涉及到队列的一些特性选择链表比数组会更优。Queue.h #pragma once防止库函数的重复引用因为库函数会在预编译的时候在程序中展开会增大程序的体积。   通过typedef对数据重命名之后需要修改数据就十分方便。并且其他函数不需要太多的改动。   这里结构体传的是指针减少没必要的内存消耗。   队列的特性是先进先出所以和栈一样只有进出队列不存在头插尾插、头删尾删的问题。   这里的图书价格应该使用浮点数类型更合适只是我之前写的是学生信息管理不想改了就这样吧意思get就行。 #pragma once #include stdio.h #include assert.h #include stdlib.htypedef struct {char name[20];char author[20];int bno;int price; }QDataType; typedef struct QListNode {struct QListNode* next;QDataType data; }QNode;//队列的结构 typedef struct Queue {QNode* head;QNode* tail;int size; }Queue;//初始化队列 void QueueInit(Queue* q);//打印 void QueuePrint(Queue* q);//队尾入队列 void QueuePush(Queue* q, QDataType* data); //队头出队列 void QueuePop(Queue* q);//获取队列头部元素 QDataType* QueueFront(Queue* q); //获取队列队尾元素 QDataType* QueueBack(Queue* q);//获取队列中有效元素个数 int QueueSize(Queue* q);//检测队列是否为空如果为空返回非零结果如果非空返回0 int QueueEmpty(Queue* q);//销毁队列 void QueueDestroy(Queue* q);main.c 因为重点在于数据结构队列的使用所以直接给定一些数据就不进行重复繁琐的数据输入工作了。 #define _CRT_SECURE_NO_WARNINGS 1#include Queue.hvoid test() {Queue q;QueueInit(q);QDataType book1 { 活着, 余华, 110701, 22 };QDataType book2 { 人血馒头, 余华, 110702, 21 };QDataType book3 { 人间词话, 王国维, 110703, 23 };QDataType book4 { 小词大雅, 叶嘉莹, 110704, 22 };QDataType book5 { 且听风吟, 村上春树, 110705, 23 };QueuePush(q, book1);QueuePush(q, book2);QueuePush(q, book3);QueuePush(q, book4);QueuePush(q, book5);QueuePrint(q);printf(%d\n\n, QueueSize(q));QDataType* head QueueFront(q);printf(%s %d %s %d\n\n, head-name, head-bno, head-author, head-price);QDataType* tail QueueBack(q);printf(%s %d %s %d\n\n, tail-name, tail-bno, tail-author, tail-price);QueuePop(q);QueuePop(q);QueuePop(q);QueuePrint(q);printf(%d\n, QueueSize(q));QueueDestroy(q); }int main() {test();return 0; }Queue.c 打印函数的实现如果队列中的数据类型发生了改变其他功能函数基本上不需要有什么变化 打印函数对应修改一下就行了因为打印需要涉及到具体的数据问题。 void QueuePrint(Queue* q) {QNode* next q-head;while(next ! NULL){printf(%s %d %s %d\n, next-data.name, next-data.bno, next-data.author, next-data.price);next next-next;}printf(\n); }队列的初始化将头尾指针都置为NULLsize置为0。 //队列初始化 void QueueInit(Queue* q) {q-head NULL;q-tail NULL;q-size 0; }入队列的实现先要创建一个节点来存放数据然后把这个队列插入到队尾。如果这个队列的队尾指针为空就说明这个队列中并没有数据那么这个新插入的数据就既是队首又是队尾。如果队列的队尾指针有值就把新节点插入到当前队尾之后然后再把队尾指针向后移动一位。插入数据之后要将size加一。 void QueuePush(Queue* q, QDataType* x) {assert(q);QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL){perror(malloc fail);exit(-1);}newnode-data *x;newnode-next NULL;if (q-tail NULL){q-head q-tail newnode;}else{q-tail-next newnode;q-tail newnode;}q-size; }出队列的实现。因为节点是动态开辟的空间所以出队列之后要将这个节点的空间释放掉。队列的特性是先入先出所以出队列就是删除头结点。删除头结点之前要保存第二个节点的位置然后删除掉头结点把第二个节点作为头结点返回。删除数据之后要将size减一。 void QueuePop(Queue* q) {assert(q);assert(!QueueEmpty(q));if (q-head-next NULL){free(q-head);q-head q-tail NULL;q-size--;}else{QNode* del q-head;q-head q-head-next;q-size--;free(del);} }获取队列头部元素这里返回的是一个结构体指针还是为了减少空间的使用因为队列本身就具备头指针所以获取队列头部元素就十分简单。 QDataType* QueueFront(Queue* q) {assert(q);assert(!QueueEmpty(q));return (q-head-data); }获取队列队尾元素一样返回的是一个结构体指针实现和获取头部元素基本一样。 QDataType* QueueBack(Queue* q) {assert(q);assert(!QueueEmpty(q));return (q-tail-data); }获取队列元素个数不要太简单本身就有个size直接返回size就行。 int QueueSize(Queue* q) {assert(q);return q-size; }检测队列是否为空如果为空返回非零结果如果非空返回0。当首尾指针都为空时队列中就必然没有数据。 int QueueEmpty(Queue* q) {assert(q);return q-head NULL q-tail NULL; }队列的销毁因为空间是动态开辟的所以需要释放空间如果不释放空间会造成内存泄露。逐一将队列中的节点空间释放掉最后head和tail的next指针都为NULL也不需要我们手动置为NULL了。 void QueueDestroy(Queue* q) {assert(q);while (q-head){QNode* next q-head;q-head q-head-next;free(next);} }
http://www.tj-hxxt.cn/news/231853.html

相关文章:

  • 网站开发进度确认单男人和女人做性的网站
  • 一个网站怎么做多条线路长春免费网上推广
  • 找装修公司网站有做lol直播网站有哪些
  • 营销推广运营 网站wordpress转入插件
  • 仿京东电商的网站开发报价wordpress 跳转 文章
  • 800元做小程序网站织梦cms wordpress
  • 做网站哪个服务器好大棚建设的网站
  • 广州网站建设网站优化推广企业做网站的坏处
  • 企业网站建设推广含义野花影视大全在线西瓜
  • 公司文化墙创意设计广州做seo公司
  • 宝安网站公司搜易网提供的技术服务
  • 如何上传图片到网站未来网站开发需求多
  • 石家庄学做网站建设培训学校制作个人网站怎么做
  • 漯河网站建设网站平台建设需求的意见
  • 服务器出租网站郴州网站开发
  • 常州网站推广多少钱钦州网站建设排名
  • 中国建设银行网站解绑手机菏泽 做网站 多少钱
  • app公司网站模板网页设计的目的
  • 上海工程建设造价信息网站网站设计素材网站
  • tklink的登录做网站网站建设岗位的认知
  • 做改网站广州开发网站平台
  • 类似红盟的网站怎么做山东恒昆建设工程有限公司网站
  • 关于加强网站建设的建议临沂中小企业网站制作
  • 可以在手机建网站的南昌市建设监督网站站长
  • 可以转app的网站怎么做WordPress数据库搜索
  • 重庆铜梁网站建设费用系统开发需求怎么写
  • 中国空间站纪念币云相册网站怎么做的
  • 微网站和手机网站wordpress 两步认证
  • 四川智能网站建设制作保定建设信息网站
  • 个人做哪方面网站木马工业产品设计公司