第二章内容小结以及资料分享

 

         第二章内容小结

 

        顺序表很简单就不说了,链表的构思很简单,但难在于它的具体实现,例如操作的特殊情况:在头尾操作,链表为空等,寒假在acm敲了很多代码所以学习过程中基本并没有遇上什么问题,这里我就归纳几个鄙人认为的需要注意的点。

  • Linklist LNode* 的数据类型都是指向LNode的指针,只是用前者强调定义头指针
  • 增加首节点的用意在于使对第一个结点进行操作会和其他结点相同
  • 在遍历链表时,若某个date域的值成为判断条件时,while(p!=NULL&&p->date!=x),括号内两个判断不能交换,因为当p为空时p就没有date域,只会访问别的内存空间造成错误。

       在学习过程中,老师讲得很详细,特别是“如果将这个这样了会怎么样呢”,等问题会很有趣,想通了会十分舒服~,然后老师严谨性的思维值得我们学习,具体问题需要具体分析等,链式结构顺序表没啥好学的,链表的话得时不时敲一敲,巩固一下记忆,还要研究一下链表问题的变种,像老师的那题反向链表就很好玩。

 


资料分享

          资料分享的话我推荐上学期唐明董老师推荐的《编码•隐匿在计算机软硬件背后的语言》,这本书生动有趣(真滴很有趣),能学到很多好玩的知识,对编程思维很有帮助,在这里我就分享一下它的一小部分内容。

       上学期我们上cpp课时学到负数在计算机内是以补码形式存在的,通过补码可以实现加负数,实现减法,但为什么可以这样子,以及这个思维是怎么出现的呢,上学期我们并没有深入了解。

 

        先来看看的概念——是指一个计量系统的计数范围。如时钟等。计算机也是一个计算器,它也是有一个计量范围,即都存在一个“模”,让我们举几个例子:钟表的计算范围是0到11,它的模是12,“模”是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。

  再来看一下在有模的计量系统中的运算:要把指向11点的时针拨向8点,要怎么调捏?Frist key:逆时针调3小时。Second key:顺时针调9小时。用数字表示就是11-3=8和11+9=8,但明显右边式子不成立,那怎么样才会成立呢,没错,时钟的计量系统是带模的,所以式子应该是(11-3)%12=8和(11+9)%12=8,是不是很神奇,所以我们得到了第一个结论:即在有模的计量系统中,减一个数等于加上它的补数,从而实现将减法运算转化为加法运算的目的。

 

       计算机显然是带模的,例如32位计算机的计量范围是2^32,模 = 2^32,那么减去一个数就是加上它的补数了,咦?二进制的补码不是取反加一吗?补数是模减那个数呀,这好像不一样呢!看上去的确不一样,其实是一样的。先让我们忘掉补码的定义,先按上文说的方式来:

 

 

 

 

          这里就会引出使用补码的思想:避免错位。回想一下,使用十进制算减法的时候:

 

 

    

          现在让我们重新回忆起补码操作:取反,然后加一。现在试试用同位数的1111···减它,你会神奇的发现这就是取反,现在回到刚刚的例子:

 

         总结,二进制的取反加一就是它在该模计量系统的“补数”,可以实现用加法实现减法的目的,从而简化电路设计等等,模就像一个太极,周而复始,就鄙人而言,不断优化解决问题的方法,不断深入问题的本质是学计算机最有趣的地方,最后记录一下我第一篇在博客园写的博客,3月17日,还要记录一下昨天的广工校赛,被虐惨了,就a出一题,月底天梯赛前一定要把T1级全刷完,追上fcm大佬。

         以上内容是对推荐书目第147页到152页和https://blog.csdn.net/leonliu06/article/details/78685197的个人的补充,本博客如有不正确的地方请多多指正。

 

转载于:https://www.cnblogs.com/qq2210446939/p/10544583.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值