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

网站建设的主要产品个人网站有什么缺点

网站建设的主要产品,个人网站有什么缺点,插科打诨WordPress主题,二次开发和开发哪个更有前途详解C语言实现链队列~#x1f60e;前言#x1f64c;整体实现内容分析#x1f49e;预备小知识#x1f64c;1.链队列头文件编写#x1f64c;2.链队列功能文件#xff08;Queue.c #xff09;编写#xff1a;#x1f64c;1#xff09;初始化函数实现2#xff09;销毁函… 详解C语言实现链队列~前言整体实现内容分析预备小知识1.链队列头文件编写2.链队列功能文件Queue.c 编写1初始化函数实现2销毁函数实现3队尾插入元素函数实现4队头删除元素函数实现5获取队头元素函数实现6获取队尾元素函数实现7获取队列元素个数的函数实现8判空函数实现3.链队列测试文件编写总结撒花博客昵称博客小梦 最喜欢的座右铭全神贯注的上吧 作者简介一名热爱C/C算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主 博主小留言哈喽各位CSDN的uu们我是你的博客好友小梦希望我的文章可以给您带来一定的帮助话不多说文章推上欢迎大家在评论区唠嗑指正觉得好的话别忘了一键三连哦 前言 哈喽各位友友们我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下我仅已此文手把手带领大家详解C语言实现链队列~ 结合链表的相关算法根据队列先进先出的结构特点实现我们链队列。都是精华内容可不要错过哟 整体实现内容分析 首先先编写我们的Queue.h文件的内容将需要的头文件和需要实现的功能函数做个声明。然后是Queue.c文件的编写主要是针对各个功能函数的一一实现最后是Test.c文件的编写测试我们功能函数是否有问题。 预备小知识 队列也可以数组和链表的结构实现使用链表的结构实现更优一些因为如果使用数组的结构出队列在数组头上出数据效率会比较低。 队列的结构示意图 1.链队列头文件编写 头文件的编写的整体思路分析 这里是有关头文件的编写和各种功能函数的声明首先用typedef关键字给存储数据类型取别名这样做的好处是以后想要改变队列的数据类型只需修改typedef int QDataType;里的int即可。定义一个结构体包括next指针和data。然后是各个功能函数声明 #pragma once #includestdio.h #includestdlib.h #includeassert.h #includestdbool.htypedef int QDataType; typedef struct QueueNode {struct QueueNode* next;QDataType data; }QNode;typedef struct Queue {QNode* head;QNode* tail; }Queue; //初始化 void QueueInit(Queue* pq); //销毁 void QueueDestory(Queue* pq); //队尾入 void QueuePush(Queue* pq, QDataType); //队头出 void QueuePop(Queue* pq); //队头元素 QDataType QueueFront(Queue* pq); //队尾元素 QDataType QueueBack(Queue* pq); //队列元素个数 int QueueSize(Queue* pq); //判空 bool QueueEmpty(Queue* pq); 2.链队列功能文件Queue.c 编写 1初始化函数实现 编写的整体思路分析 先用assert确保pq指针的有效性然头尾指针置为空。 //初始化 void QueueInit(Queue* pq) {assert(pq);pq-head pq-tail NULL; }2销毁函数实现 编写的整体思路分析 先用assert确保pq指针的有效性先定义一个指针cur记录head指针的位置然后用while循环进行一个个删除先定义一个next指向cur指针指向的下一个队列元素然后删掉cur指向的元素再让cur移动到下一个。 //销毁 void QueueDestory(Queue* pq) {assert(pq);QNode* cur pq-head;while (cur){QNode* next cur-next;free(cur);cur next;}pq-head pq-tail NULL;} 3队尾插入元素函数实现 编写的整体思路分析 先用assert确保pq指针的有效性用malloc函数申请空间用if语句来判断空间是否开辟失败。然后让newnode-next置为空把数据放进去。如果是一开始时为空的则让pq-head pq-tail newnode;如果不为空则让之前的tail指向的节点与新节点相连。 //队尾入 void QueuePush(Queue* pq, QDataType x) {assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL){printf(malloc fail\n);exit(-1);}newnode-data x;newnode-next NULL;if (pq-tail NULL){pq-head pq-tail newnode;}else{pq-tail-next newnode;pq-tail newnode; 4队头删除元素函数实现 编写的整体思路分析 用assert确保pq指针的有效性如果队列为空就不用进行队头出的操作如果执行则报错。先用next指针指向首结点的下一个节点 。然后删掉首节点再让head指针指向next位置。删完后将尾指针置为NULL //队头出 void QueuePop(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));QNode* next pq-head-next;free(pq-head);pq-head next;if (pq-head NULL){pq-tail NULL;} } 5获取队头元素函数实现 编写的整体思路分析 先用assert确保pq指针的有效性如果队列为空就不用进行此操作。然后直接返回首节点数据即可。 //队头元素 QDataType QueueFront(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-head-data; } 6获取队尾元素函数实现 编写的整体思路分析 先用assert确保pq指针的有效性如果队列为空就不用进行此操作。然后直接返回尾节点数据即可。 //队尾元素 QDataType QueueBack(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-tail-data;} 7获取队列元素个数的函数实现 编写的整体思路分析 先用assert确保pq指针的有效性定义cur指向head的位置。利用while循环先让Size加1然后让cur指向下一个知道cur为空时结束循环返回Size大小就是队列元素的个数。 //队列元素个数 int QueueSize(Queue* pq) {assert(pq);int Size 0;QNode* cur pq-head;while (cur){Size;cur cur-next;return Size;} } 8判空函数实现 编写的整体思路分析 先用assert确保pq指针的有效性然后pq-head NULL为真则返回1为假则返回0 //判空 bool QueueEmpty(Queue* pq) {assert(pq);return pq-head NULL; } 3.链队列测试文件编写 3Tese.c文件的编写。 #define _CRT_SECURE_NO_WARNINGS 1 #includeQueue.h void test() {Queue q;QueueInit(q);QueuePush(q, 1);QueuePush(q, 2);QueuePush(q, 3);QueuePush(q, 4);printf(队首元素%d\n, QueueFront(q));printf(队尾元素%d\n, QueueBack(q));printf(队列元素的个数%d\n, QueueBack(q));printf(队列元素输出);while (!QueueEmpty(q)){QDataType* front QueueFront(q);printf(%d, front);QueuePop(q);}printf(\n);QueueDestory(q); } int main() {test();return 0; } 功能测试结果展示图 总结撒花 本篇文章旨在分享详解C语言实现链队列。希望大家通过阅读此文有所收获本次关于队列的实现相对于之前链表和顺序表的实现简单一点实现起来的算法和之前的栈是相似的但结构特点与栈是相反的。指针的指向没有那么复杂主要是对入队列和出队列的功能实现。但也有很多地方需要注意的。比如说野指针的问题动态开辟的空间一定要free掉并且把指针置为NULL。用动态实现相对于静态实现还比较灵活也能对空间有很大的节省。    如果我写的有什么不好之处请在文章下方给出你宝贵的意见。如果觉得我写的好的话请点个赞赞和关注哦~
http://www.dnsts.com.cn/news/213345.html

相关文章:

  • 深圳网站建设服务平台陕西建设集团招聘信息网站
  • 星沙网站制作wordpress 微信发布文章
  • 中国空间站建造历程nodejs搭建wordpress
  • 网站建设与软件开发哪个好赚钱广州网站建设性价比
  • 中山网站建设文化大学生做家教比较好的网站
  • 免费网站app哪个最好外贸网址
  • 手机网站要备案吗wordpress的数据库有多大?
  • 老年夫妻做爰视频网站宝应seo优化公司
  • 本地网站开发怎么自己做网站表白
  • 开发一个网站要多久做化工贸易要用那些网站推广
  • 网站开发常见问题微信代运营合作方案
  • dw网站建设讨论总结深圳seo网站建设
  • 哈尔滨门户网站是什么如何做一家门户网站
  • 网站建设公司86215网盟推广费用
  • 怎样做电影网站如何做好一个网站的推广
  • 政务服务网站建设如何解决网站图片打开慢
  • 网站关键词在哪里设置沈阳三好街做网站公司
  • 网站增加网页建设报名系统是正规网站吗
  • 网站统计查询公众出行服务网站建设
  • 网站建设制作模板网站怎么做爱主题 wordpress
  • 临沂seo建站移动端网站如何开发
  • 做网站一次付费潍坊程序设计网站建设公司
  • 成都网站开发定制建站运营新闻
  • 江西工程建设信息网站gzip压缩网站
  • 全球网站流量排名查询桂林山水甲天下是哪个景点
  • 成品网站 智能建站企业网站推广目标
  • 内部建设网站需要什么条件手机直播软件
  • 网站设计一般多少钱一个页面深圳建设工程价格信息网站
  • 沧州模板建站平台网站栏目规划怎么写
  • 建设网站要花多少钱做外贸哪个网站看外汇