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

网站建设公司的方案led外贸网站建设

网站建设公司的方案,led外贸网站建设,上海建筑工程公司排行榜,给文字做网站链接队列的接口实现#xff08;附图解和源码#xff09; 文章目录队列的接口实现#xff08;附图解和源码#xff09;前言一、定义结构体二、接口实现#xff08;附图解源码#xff09;1.初始化队列2.销毁队列3.队尾入队列4.判断队列是否为空5.队头出队列6.获取队列头部元素7…队列的接口实现附图解和源码 文章目录队列的接口实现附图解和源码前言一、定义结构体二、接口实现附图解源码1.初始化队列2.销毁队列3.队尾入队列4.判断队列是否为空5.队头出队列6.获取队列头部元素7.获取队列尾部元素8.获取队列中有效元素个数三、源代码展示1.test.c测试主函数2.Queue.h接口函数的声明3.Queue.c接口函数的实现总结前言 本文主要介绍对列中增删查改等接口实现结尾附总源码 一、定义结构体 在这里我们用链表的结构实现队列效率比数组高 这里和单链表不同的是需要定义两个结构体一个表示链式结构队列另一个是队列的结构。 代码如下示例 typedef int QDataType; typedef struct QueueNode {struct QueueNode* next;QDataType data; }QNode; typedef struct Queue {QNode* head;QNode* tail;int size; }Queue;二、接口实现附图解源码 这里一共8个接口我会一 一 实现源码图解 1.初始化队列 初始化队列和单链表初始化时一致详细的可以参考单链表初始化 代码如下示例 void QueueInit(Queue* pq) {assert(pq);pq-head pq-tail NULL;pq-size 0; }2.销毁队列 最后不要忘了把pq-head和pq-tail置为NULL 代码如下示例 void QueueDestroy(Queue* pq) {assert(pq);QNode* cur pq-head;while (cur){QNode* del cur;cur cur-next;free(del);}pq-head pq-tail NULL; }3.队尾入队列 先用 malloc 开辟一个 newnode 空间 代码如下示例 void QueuePush(Queue* pq, QDataType x) {assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL){perror(malloc fail);exit(-1);}else{newnode-data x;newnode-next NULL;}if (pq-tail NULL){pq-head pq-tail newnode;}else{pq-tail-next newnode;pq-tail newnode;}pq-size; }既然要不断判断链表是否为空我们应该写一个 判断队列是否为空的函数。 4.判断队列是否为空 如果为空返回非零结果如果非空返回0 代码如下示例 bool QueueEmpty(Queue* pq) {assert(pq);return pq-head NULL pq-tail NULL; }5.队头出队列 注意删除头对列时要注意队列可以为空所以用assert进行断言 这里也分两种情况1.队列只有一个结点2.队列有两个以上的结点。 6.获取队列头部元素 直接返回 pq-head-data 即可。 代码如下示例 QDataType QueueFront(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-head-data; }7.获取队列尾部元素 直接返回 pq-tail-data 即可。 代码如下示例 QDataType QueueBack(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-tail-data; }8.获取队列中有效元素个数 直接返回 pq-size 即可 代码如下示例 int QueueSize(Queue* pq) {assert(pq);return pq-size; }如果我们没有在结构体中定义 size 应该怎么做? 代码如下示例 int QueueSize(Queue* pq) {assert(pq);QNode* cur pq-head;int n 0;while (cur){n;cur cur-next;}return n; }三、源代码展示 1.test.c测试主函数 代码如下示例 //#include stdio.h // //int f(int n) //{ // return n 1 ? 1 : f(n - 1) n; //} // //int main() //{ // printf(%d\n, f(10000)); // // return 0; //} #include stdio.h #include Stack.h #include Queue.h // 解耦 -- 低耦合 高内聚 // 数据结构建议不要直接访问结构数据一定要通过函数接口访问 void TestStack() {ST st;StackInit(st);StackPush(st, 1);StackPush(st, 2);StackPush(st, 3);printf(%d , StackTop(st));StackPop(st);printf(%d , StackTop(st));StackPop(st);StackPush(st, 4);StackPush(st, 5);while (!StackEmpty(st)){printf(%d , StackTop(st));StackPop(st);}printf(\n); } void TestQueue() {Queue q;QueueInit(q);QueuePush(q, 1);QueuePush(q, 2);QueuePush(q, 3);printf(%d , QueueFront(q));QueuePop(q);printf(%d , QueueFront(q));QueuePop(q);QueuePush(q, 4);QueuePush(q, 4);QueuePush(q, 4);while (!QueueEmpty(q)){printf(%d , QueueFront(q));QueuePop(q);}printf(\n);QueueDestroy(q); } int main() {//TestStack();TestQueue();return 0; }2.Queue.h接口函数的声明 代码如下示例 #pragma once #include stdio.h #include stdlib.h #include assert.h #include stdbool.h typedef int QDataType; typedef struct QueueNode {struct QueueNode* next;QDataType data; }QNode; typedef struct Queue {QNode* head;QNode* tail;int size; }Queue;void QueueInit(Queue* pq);//初始化队列 void QueueDestroy(Queue* pq);//销毁队列 void QueuePush(Queue* pq, QDataType x);//队尾入队列 void QueuePop(Queue* pq);//队头入队列 QDataType QueueFront(Queue* pq);//获取队列头部元素 QDataType QueueBack(Queue* pq);//获取队列尾部元素 bool QueueEmpty(Queue* pq);//判断队列是否为空 int QueueSize(Queue* pq);//获取队列中有效元素个数3.Queue.c接口函数的实现 代码如下示例 #include Queue.h void QueueInit(Queue* pq) {assert(pq);pq-head pq-tail NULL;pq-size 0; } void QueueDestroy(Queue* pq) {assert(pq);QNode* cur pq-head;while (cur){QNode* del cur;cur cur-next;free(del);}pq-head pq-tail NULL; } void QueuePush(Queue* pq, QDataType x) {assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL){perror(malloc fail);exit(-1);}else{newnode-data x;newnode-next NULL;}if (pq-tail NULL){pq-head pq-tail newnode;}else{pq-tail-next newnode;pq-tail newnode;}pq-size; } void QueuePop(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));if (pq-head-next NULL){free(pq-head);pq-head pq-tail NULL;}else{QNode* del pq-head;pq-head pq-head-next;free(del);del NULL;}pq-size--; } QDataType QueueFront(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-head-data; } QDataType QueueBack(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-tail-data; } bool QueueEmpty(Queue* pq) {assert(pq);return pq-head NULL pq-tail NULL; } int QueueSize(Queue* pq) {assert(pq);/*QNode* cur pq-head;int n 0;while (cur){n;cur cur-next;}return n;*/return pq-size; }总结 以上就是今天要讲的内容本文介绍了队列8种接口的模拟实现的图解源代码 如果我的博客对你有所帮助记得三连支持一下感谢大家的支持
http://www.hkea.cn/news/14426291/

相关文章:

  • 怎样黑公司的网站wordpress支付宝个人
  • 网上做预算有哪些网站网络推广都有哪些渠道
  • 网站模板 安装asp.net新建网站
  • 电子网站大全宿迁做网站公司
  • asp网站免费空间外贸流程中涉及的重要单证
  • 礼盒包装设计网站做服务器的网站都有哪些功能
  • 意大利做包招工的网站邯郸网站优化怎么用
  • 在vs做的项目怎么连接到网站软装设计公司名称
  • 网站注册便宜重庆网站建设哪个平台好
  • 台州网站推广优化手机网站建设 移商动力
  • 做网站需要跟客户了解什么软件中国五大门户网站
  • 心雨在线高端网站建设专业如何做好网络销售技巧
  • wordpress 移动站工作心得
  • 大连网站开发建wordpress 侧边悬浮块
  • 自己做的网站出现500错误怎么解决自学app软件开发
  • 软件生成器福州搜索引擎优化公司
  • 北京公司网站建设价格乐清市重大新闻
  • win7 iis网站无法显示该页面百度是网站吗
  • 网站建设合同书-详细版广东省建设厅官方网站网址
  • 接口网站建设ps怎么做网站首页
  • 兰州电商网站建设网站做seo收录
  • 郎创网站建设80s网站建设工作室
  • 公司如何建站专业网站设计 软件
  • 社保网站是每月1-6号都是在建设中的吗易申建设网站
  • 如何建一个视频网站河南省电力工程建设企业协会网站
  • 会声会影免费模板网站linchong.wordpress
  • 做网站的功能是什么安徽网站设计方案
  • 莆田网站关键词优化福州搜索优化技术
  • 网站做多长时间才有流量软件外包公司是干什么的
  • 有关于网站建设的论文淘宝自己建的网站