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

网站建设费用多少网络安全设计报告

网站建设费用多少,网络安全设计报告,wordpress企业中文模板下载地址,新月直播大全免费下载手机版实现循环队列最难的地方就在于如何判空和判满#xff0c;只要解决了这两点循环队列的设计就没有问题。接下来我们将会使用数组来实现循环队列。 接下来#xff0c;为了模拟实现一个容量为4的循环队列#xff0c;我们创建一个容量为4 1 的数组。 接下来我们将会对这个数组…实现循环队列最难的地方就在于如何判空和判满只要解决了这两点循环队列的设计就没有问题。接下来我们将会使用数组来实现循环队列。 接下来为了模拟实现一个容量为4的循环队列我们创建一个容量为4 1 的数组。 接下来我们将会对这个数组进行增删 下图是对于这个循环进行插值其中h代表headt代表tail。h代表循环列表的第一个元素t代表循环列表的末尾元素的下一个。0代表空的还未利用的空间。 当t走到末尾时再加一将会跳转到数组的头部以此实现逻辑上的循环。 添加元素 删除元素 继续添加元素 继续删除元素 继续添加元素 通过这些图我们可以清晰地看到当ht的时候循环列表为空。当t1 h时循环列表为满。 熟悉了方法后实现它就不难了。接下来我将会提供代码我将会写上必要的注释方便理解。 头文件 #pragma once #include stdio.h #include stdlib.h #include assert.h #include stdbool.htypedef int QueueData; typedef struct MyCircularQueue {QueueData* a;int k;int head;int tail; } MyCircularQueue;// 这个函数用于创建一个循环队列。参数 k 表示队列的容量。 // 返回值是一个指向循环队列对象的指针。 MyCircularQueue* myCircularQueueCreate(int k);// 这个函数用于向循环队列中添加一个元素。 // 参数 obj 是指向循环队列对象的指针value 是要添加的元素的值。 // 如果成功添加元素则返回 true如果队列已满则返回 false。 bool myCircularQueueEnQueue(MyCircularQueue* obj, QueueData value);// 这个函数用于从循环队列中移除一个元素。 // 参数 obj 是指向循环队列对象的指针。 // 如果成功移除元素则返回 true // 如果队列为空则返回 false。 bool myCircularQueueDeQueue(MyCircularQueue* obj);// 这个函数用于获取循环队列的队首元素。 // 参数 obj 是指向循环队列对象的指针。返回队首元素的值。 int myCircularQueueFront(MyCircularQueue* obj);// 这个函数用于获取循环队列的队尾元素。 // 参数 obj 是指向循环队列对象的指针。返回队尾元素的值。 int myCircularQueueRear(MyCircularQueue* obj);// 这个函数用于检查循环队列是否为空。 // 参数 obj 是指向循环队列对象的指针。 // 如果队列为空则返回 true否则返回 false。 bool myCircularQueueIsEmpty(MyCircularQueue* obj);// 这个函数用于检查循环队列是否已满。 // 参数 obj 是指向循环队列对象的指针。 // 如果队列已满则返回 true否则返回 false。 bool myCircularQueueIsFull(MyCircularQueue* obj);// 这个函数用于释放循环队列对象所占用的内存。 // 参数 obj 是指向循环队列对象的指针。 // 在调用该函数后指向循环队列对象的指针将不再有效。 void myCircularQueueFree(MyCircularQueue* obj); 函数的实现 #include Cycle_Queue.hMyCircularQueue* myCircularQueueCreate(int k) {assert(k 0);MyCircularQueue* ret (MyCircularQueue*)malloc(sizeof(MyCircularQueue));QueueData* arr (QueueData*)malloc(sizeof(QueueData) * (k 1));if (ret NULL || arr NULL){perror(malloc faile);exit(-1);}ret-a arr;ret-k k;ret-head ret-tail 0;return ret; }void myCircularQueueFree(MyCircularQueue* obj) {assert(obj);free(obj-a);obj-a NULL;obj-k 0;free(obj); }int myCircularQueueFront(MyCircularQueue* obj) {assert(obj);if (myCircularQueueIsEmpty(obj))return -1;return obj-a[obj-head]; }int myCircularQueueRear(MyCircularQueue* obj) {assert(obj);if (myCircularQueueIsEmpty(obj))return -1;// 值得注意的是tail指向的是队列末尾元素的下一个所以你需要让他向前走完一圈后再后退一步才能得到末尾元素。// 也即(obj-tail obj-k) % (obj-k 1)其中% (obj-k 1)是为了保证tail的值可以再某个区间里以实现循环队列。return obj-a[(obj-tail obj-k 1 - 1) % (obj-k 1)]; }bool myCircularQueueIsEmpty(MyCircularQueue* obj) {assert(obj);return obj-head obj-tail; }bool myCircularQueueIsFull(MyCircularQueue* obj) {assert(obj);// 当tail再往前走一步就碰到head了就说明此时的队列已经满了。return obj-head (obj-tail 1) % (obj-k 1); }bool myCircularQueueEnQueue(MyCircularQueue* obj, QueueData value) {assert(obj);if (myCircularQueueIsFull(obj))return false;obj-a[obj-tail] value;obj-tail (obj-tail 1) % (obj-k 1);return true; }bool myCircularQueueDeQueue(MyCircularQueue* obj) {assert(obj);if (myCircularQueueIsEmpty(obj))return false;obj-head (obj-head 1) % (obj-k 1);return true; }
http://www.huolong8.cn/news/38199/

相关文章:

  • 做网站用什么插件保险网上服务平台
  • 免费app下载网站微信小程序哪里找
  • 洛阳新光建站系统上海专业做网站的
  • 网站建设开封软件制作网站建设时间规划
  • 军事网站大全军事网wordpress 更多内容
  • 网站后台上传文件wordpress最新中文版下载
  • 网站上线稳定后工作Wordpress全站404
  • 网站建设犭金手指六六壹柒做视频的模板下载网站
  • 建设广告网站需要资质吗图书网站建设策划书
  • 阿里云服务器可以做下载类网站吗网站 为何要 备案
  • 代刷网站推广链接0元价格专业人士怎样建网站
  • 手工艺品网站建设的选题背景哈尔滨 做网站公司哪家好
  • 电子商务网站建设过程范文东莞企业网络推广
  • 赣州门户网站建设做网站网页需要什么软件
  • 甘肃网站开发电商主页设计
  • 医药网站文案编辑是怎么做的seo教程正规化岚鸿
  • 就业服务网站建设方案网站模板上传打不开
  • 麻涌东莞网站建设网站首页页面代码
  • 承接网站开发文案家具在线设计平台
  • 课桌公司网站建设南昌企业网站开发公司
  • 网站设计的机构海西州商城网站建设
  • 宝应123网站建设网高端网站建设汉狮团队
  • 街舞舞团公司做网站网站如何做用户的实名认证
  • 源码交易平台网站源码网站微信建设运维培训班
  • 个人做游戏下载网站侵权吗邢台网站123
  • 网站建设建设公司资质要求flash工作室网站模板
  • 蓝色科技网站建设sjz住房建设局网站
  • 铁路建设工程网站欧美做视频网站有哪些
  • C 建设个人网站惠州市惠城区规划建设局网站
  • 业之峰装饰公司装修每平米价格淄博网站制作优化