所有分类
  • 所有分类
  • 实时新闻

干货!C语言高级编程教学:学不会?我们送学习源码!

干货!C语言高级编程教学:学不会?我们送学习源码!

别只顾着收藏啦,关注我们会有更多干货哦!


C语言高级知识点

正在自学C语言?虽然学了很久,但你还是觉得自己处于新手水平?没事!小编给你提个建议,如果你感觉你的C语言基本语法,已经掌握得差不多了,那么你就可以学习一下数据结构(C语言版),数据结构这个知识点对于大多数学习编程的人来说,几乎算得上是必过的一个科目。有些小伙伴可能已经在自学数据结构,但或多或少会有些地方可能会有点难以理解,小编不是什么大佬,希望这篇文章能帮到你。

这篇文章会让大家认识一下队列,队列在数据结构中是一个非常简单的存在,所以呢,这篇文章通俗易懂,适合刚入门的新手。

干货!C语言高级编程教学:学不会?我们送学习源码!

话不多说,上菜!

整个程序需要三个函数,分别是入队、出队、初始化队列(并插入首个队列成员),本文章中的源码可能跟一些数据结构教学书籍上的可能不一样,会比它们的代码量少一点,或者是使用的函数比他们少一点。由于时间问题,在这里小编就简单的教大家实现队列的入队、出队、初始化就可以了,虽然少了点,但是呢,你们可以举一反三写出你们需要的函数。

干货!C语言高级编程教学:学不会?我们送学习源码!

第一步,创建我们的队列初始化

这个初始化函数的功能是创建并初始化第一个队列成员,这里的初始化是直接给第一个队列成员赋值,小编这里给出的示例程序中,队列成员的数据域存放的是整型数,数据域存放的数据类型各位小伙伴可根据需要更改。

干货!C语言高级编程教学:学不会?我们送学习源码!

我们给函数取定义为que* ini_que(int number),接受一个int类型的参数,这个参数用于队列成员的赋值,函数返回创建的队列成员地址。函数里面使用malloc()函数申请一块内存,为什么呢?因为我们后面需要用free()函数释放掉出队的队列成员内存。不理解的请看下图源码实例↓

干货!C语言高级编程教学:学不会?我们送学习源码!

第二步,创建入队函数

小编给入队函数起名为insert(),这个函数接受两个参数,一个是要被插入数据的队列的队头指示器,在这里小编就叫它队头指示器吧,它起到标记队头的作用,在后期队列的操作过程中能提供很大的便利,这里跟别的地方可能不同,各有各的风格吧。

干货!C语言高级编程教学:学不会?我们送学习源码!

在函数里面,我们使用了一个全局变量——traverse(que *型),翻译过来就是遍历的意思,它起到遍历整个队列的作用,在队尾插入数据,所以我们在开头将mark(que *型)的值赋给traverse,使用一个while()循环从队头向队尾的移动。这样保证了队头指示器的完整性,又能遍历整个队列。以上全局变量在源码即可看到。

干货!C语言高级编程教学:学不会?我们送学习源码!

入队函数大概的工作原理是,使用while()循环逐步将traverse向队尾方向移动,在while()里面使用if判断语句进行判断,查看当前traverse指向的队列成员是否处于队尾,如果成员处于队尾,就使用malloc()申请一块内存,并对将即将入队的元素插入刚申请的内存中,并将内存中的head指针指向前一个成员,tail指针置空,tail置空特比重要(至少在这里是这样的),因为在后续的入队操作中,要以tail是否为空来判断是否可以插入数据

你说你看不懂?没事,文章末尾有源码!

干货!C语言高级编程教学:学不会?我们送学习源码!

第三步,出队函数

出队函数中,要申请一个que*类型的指针用于释放内存,小编给它取名为free_space(小编英语渣), free_space直接指向mark所指向的内存,用于在下面的free()函数中释放内存,为什么要释放掉内存呢?因为一个队列成员进行出队操作过后,我们尽量要将它所占用的内存空间释放掉,以免浪费内存资源。具体的实现步骤在下图的源码中↓

干货!C语言高级编程教学:学不会?我们送学习源码!

在出队函数中要注意,free()函数释放内块是否属于malloc()函数申请的内存块,如果不是很有可能会释放失败哦!

运行结果

在这个例子中,小编创建了一个可用容纳11个队列成员的队列,并从1开始向队尾写入数据,最后的队尾位置是11,在运行结果中可以看到,1-11按顺序插入队列中,然后在以1-11的顺序取出并打印在屏幕上,这个符合队列的先进先出,后进后出的特点。

干货!C语言高级编程教学:学不会?我们送学习源码!
干货!C语言高级编程教学:学不会?我们送学习源码!

学习源码如何获取?

关注《一碳科技》,私信关键字:队列学习源码获取即可获取源码,记住关键字不能错哦!

干货!C语言高级编程教学:学不会?我们送学习源码!

原文链接:https://www.w1ym.com/82545/,转载请注明出处~~~
0

评论0

请先

站点公告

【温馨提示】 本站不建议您对本站支付任何费用或开通任何会员本站99%资源为免费资源只提供共享不提供技术支持,本站资源主要以学习开发为主,本站是为个人资源记录学习研究等情况而建立,如特殊原因下载,需在24小时删除相关资源。本站资源均来自互联网收集或网友分享,若有侵权,请联系站长删除,谢谢。立即查看
显示验证码
没有账号?注册  忘记密码?