【答疑解惑第三十八讲】初学者做项目需要掌握哪些东西?

疑惑一

【答疑解惑】初学必须掌握的数据结构有哪些?

数据结构有很多,难以程度也不相同,初学者应该掌握哪些基本的数据结构呢?作为一个过来人,我觉得作为一个初学者应该掌握如下一些数据结构,当然掌握越多当然是好的,这里是从一个常用和难以程度综合权衡,对大多数初学者的建议,其他一些相对较难的以后慢慢在学校。

1)一维数组,二维数组以及更高维数的数组,尤其一二维最为常用,一定要掌握,不单单是赋值、访问,还包括相应指针定义及使用。

2)链表,包括单项链表,双向链表;链表的添加、删除、遍历、查询等等。

3)队列,能够实现基本的数据队列,模拟消息队列的发送,接收,消息满及空的管理。

4)栈,包括栈的基本进栈、出栈、栈空栈满管理。

5)树,包括基本的二叉树,普通树。能进行树节点的增加、删除、遍历和查询。

以上作为初学必须掌握的一些基本数据结构,也是最为常用和通用的内容。等到这些内容能熟练掌握之后,可以进一步学习相对复杂一些的其他内容,比如平衡树、红黑树、B数、图以及一些对应的算法。初学者除了掌握上面这些基本数据结构,最关键的是要理解他们的特点,也就是说要学会什么样的问题适合用什么数据结构来描述,只有这样才能灵活应用他们,毕竟数据结构是为编程服务的。

疑惑二

【答疑解惑】初学者参与项目必须掌握哪些基本知识

初学者学习到一定程度,可以参与或者自己找一些项目来提高自己的水平和视野。只是学习书本上的东西会让你心里觉得不踏实,可以说综合水平的提高只有通过大量的项目练习才能做到。当然不是一开始学习就进入项目阶段,那样你会觉得到处都是不懂的东西,也就是说在进入实际项目之前还是的会一些基本知识才行。下列列举了一些必备的,学会和了解了这些内容在去接触项目会让你更轻松的过渡到项目参与和开发。

1,具备加扎实的基本功,至少书上常用的知识点都要会,这个往往通过最开始的学习和练习能逐渐达到。

2,学习基本和常用的数据结构和算法知识,比如上面的数据结构作为一个初学者是应该掌握和灵活应用的。

3,学习一些平台相关知识,系统调用,API调用,能查阅API参考手册。

4,学习基本的多线程相关知识,几乎每一个使用的项目都会用到多线程的知识、同步和互斥等等,理解为什么需要使用它们。

5,能看到常用的算法代码,比如常用排序,查找。阅读代码也是一种重要的能力,因为很多情况下是你在别人的基础上去修改代码而不是重新开始。所以你需要在看懂别人的代码基础之上进行修改。

有了上述这些基本知识,就能比较平滑的切入实际项目开发。当然更多的知识往往是在项目开发过程中逐渐学校和提高。

疑惑三

【答疑解惑】如何正确比较浮点数

浮点数在内存中是按照科学计数法存储的。 单精度浮点数用32位存储,最高位为符号位,接下来中间的8位存指数部分,表示数值大小范围。最低的23位作为尾数表示精度。 双精度浮点数用64位存储,最高位为符号位,接下来中间的11位存指数部分,表示数值大小范围。最低的51位作为尾数表示精度。 正因为浮点数不像整数那样是一个精确的数值,浮点数的精度部分在计算机中不可能无限长度,是一个有有限精度的值,所以在计算机中是不能准确判断这两个数是否真正相当,只能在一个精度返回内去判断。 在float.h文件中,实际上已经给出了用于判断浮点数最小的依据: #define FLT_EPSILON 1.19209290E-07F #define LDBL_EPSILON 1.084202172485504E-19 当然这个是最小能分辨出来的浮点数了,实际应用中可以根据实际情况选取。

因此要判断两个浮点数是否相等,只能在一个精度范围内来判断,比如按差值小于10的-5次方就认为是相等的了:

if (fabs(f1 - f2) <= 1.0E-5F)

// to be equal

else

//NOT to be equal

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2016-01-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

【答疑解惑】失之毫厘谬以千里

1、scanf使用陷阱 ? ? 如果scanf中%d是连着写的如“%d%d”,在输入数据时,数据之间不可以加逗号,只能是空格或tab键或者回车键“1 2” 或 ...

30970
来自专栏C语言及其他语言

初学C语言的学习计划

背景:很多同学在学习C语言的过程中,常常会遇到这样的问题,即“教材看完了,知识点也懂,但写不出来程序”,这段时间,我们通过长期与有多年C语言研究经验的教授、教师...

37140
来自专栏tkokof 的技术,小趣及杂念

Sweet Snippet 之 Bounce Setting

  又是一篇Sweet Snippet,自己看来都觉得过小,不足以成篇,不过自觉有些趣味,也就随便记一记了,权当自娱自乐 :)

6810
来自专栏牛客网

吉比特面试经验 游戏研发岗实习生

36900
来自专栏take time, save time

你所能用到的数据结构(二)

      周末开始更新了,首先感谢各位对我写的东西还能保持兴趣,先回答几个留言中的一个问题和我对无损编码那一节的一个留言的一个看法,第一个是推荐算法书,首先,...

32060
来自专栏程序员叨叨叨

8.2 函数重载

Cg 语言支持函数重载(Functon Overlaoding),其方式和 C++基本一致,通过形参列表的个数和类型来进行函数区分。例如:

12120
来自专栏数据结构与算法

Day2上午解题报告

预计分数:100+0+60=160 实际分数:100+0+60=160 mmpT1数据错了。。。 T1遭遇 题目描述 你是能看到第一题的 friends呢。 —...

45840
来自专栏我的python

递归方法的理解

递归思想算是编程中比较常见但对初学者而言又有些难以理解的方法了。在leetcode上刷了几道题都用递归思想成功解决后觉得应该贯彻互联网的开源共享精神,总结一下自...

12200
来自专栏NetCore

关于某道C#上机题的OO

前两天在园子里,有人出了一道《关于一道C#上机题的一点想法》,大概的意思呢是利用OO的思想来进行编程,接着又有一位朋友,也写了自己的答案,此朋友非常厉害,从类图...

23160
来自专栏take time, save time

Think in 递归

     网上写递归的文章可以用汗牛充栋来形容了,大多数都非常清晰而又细致的角度上讲解了递归的概念,原理等等。以前学生的时候,递归可以说一直是我的某种死穴,原理...

421120

扫码关注云+社区

领取腾讯云代金券