都说细节决定成败,古人诚不欺我。

最近新学了栈与队列,第一感觉就是栈和队列与链表差不多,只是对于指针的使用和命名有所不同。然后以实际操作就出了大问题。

一、运行超时。

 编写程序判断一串字符串中括号是否匹配,采用 cin.get() 获取字符,然后总会在短短几个字符的判断上运行超时。几经折腾,最后得到老师的帮忙,终于解决了。以下是总结的几个小点。

 (1) 将 cin.get() 换成 cin.getline() 

 以下引用别人的理解:(https://bbs.csdn.net/topics/110037374)

如果生产部门一生产出一个商品就通知销售部门去运河接受货物,而每次销售部门专门耗费了大量人力组织的货物截取活动,却仅仅只能得到连一个最小的运输车都塞不满的产品,这样就得不偿失,于是     双方协商后得到一个解决方案在运河的其中一边设立一个仓库部门,生产部门只要生产出了产品只管发到一个仓库部门,当仓库堆积满了,仓库部门就通知销售方来获取所有的产品(更新缓冲区)

 我是这么理解的,cin.get() 好比每次获取一个元素(生产出一个商品就通知销售部门去运河接受货物),都要先把这一个元素存入缓冲区,然后在获取赋值;而 cin.getline() 则是一次获取一批元         素,     减少了许多不必要的过程。所以在少数元素时,cin.getline() 比 cin.get() 运行速度要快一些。

 (2)合理运用逻辑词 &&

 这是原本就知道,但很多时候都会忘掉的:(A && B)

 当A的值为假时,&& 后面的字符是永远不会被执行的。如果有把握A永远会先于B为假,那么就应该吧A放在前面判断。

二、处理一个小bug

 以下时出现bug的代码

 1 #include <iostream>
 2 using namespace std;
 3
 4 typedef struct StackNode
 5 {
 6     int data;
 7     struct StactNode *next;
 8 }StackNode, *LinkStack;
 9
10 void Push(LinkStack &s, int e)
11 {
12     LinkStack p;
13     p = new StackNode;
14     p->data = e;
15     p->next = s;
16     s = p;
17 }
18
19 int main()
20 {
21
22     system( "Pause" );
23     return 0;
24 }

 然后这是报错内容:

 C:\Users\SP3\Desktop\未命名1.cpp In function 'void Push(StackNode*&, int)':

 15 10 C:\Users\SP3\Desktop\未命名1.cpp [Error] cannot convert 'LinkStack {aka StackNode*}' to 'StactNode*' in assignment

 当初我排查了好久也没发现哪里错,报错内容为:无法在分配中将“LinkStack {aka StackNode *}”转换为“StactNode *”。

 后来才发现,我打错了一个字符,将第7行的 StackNode 打成了 StactNode,导致每一个节点的 next 指针与下一个节点的类型不同,所以无法转换类型。

 久久排查不出的原因有两个:

 (1)粗心。t 和 k 小写,外加字体小,一眼扫过去没看出来。

 (2)有部分代码是复制以前自己打过的,然后出现这种不能理解的问题,心态崩了,更难看出那一个字母的错误。

 以上是我个人的一些理解,如果有错请指出来。

三、以下是个人的学习进度

 (1)上一个目标的实现:经过几个小时的排除 bug 的操作,对于栈与队列基本熟悉,链式存储也不再像之前那样陌生了。目标基本完成。

 (2)下一个目标:接下来该学习串与广义表,希望在学习过后能够理解和运用。同时要求自己小心写代码,莫要因一个字符而排查几个小时。

转载于:https://www.cnblogs.com/ZwQuan/p/10618854.html

对于细节的一些处理和领悟相关推荐

  1. 遇见OFFER,阿里云最强技术团队现身招聘,“职”为你来

    简历投递入口: https://bss.csdn.net/delivery/resume/ali 在5·15 遇见OFFER大厂梦招聘活动中,近20家企业来到CSDN[遇见OFFER]直播招聘栏目,其 ...

  2. 2020阿里招聘岗位要求

    简历投递入口: https://bss.csdn.net/delivery/resume/ali 职位名称 职位描述 职位要求 阿里云智能事业群-中间件业务中台架构师-北京\杭州 1.负责阿里云中台项 ...

  3. Derek Sivers:记日记和专题记录的收获(译)

    初稿:2020年07月01日 原文:https://sivers.org/dj 以与原作者联系过,没问题.水平有限,有问题,请帮助指出.谢过. Benefits of a daily diary an ...

  4. 【产品】腾讯内部的顶级产品课:灵动在细节

    原研哉在他的<设计中的设计>中有介绍过这样一个案例:日本机场原来是用一个圆圈和一个方块表示出入的区别,形式简单并且好用,但设计师佐藤雅彦却用一个更"温暖"的方式来重新设 ...

  5. 透过J2Cache的吐槽,领悟代码的设计

    经常去开源社区的,大部分应该都知道J2Cache吧,不过没听说过也没关系,这 是 开源中国社区OSChina 目前正在使用的两级缓存框架,托管在OSG@Git上,大部分由设计人红薯来维护.它的第一级缓 ...

  6. 我的2013拾遗总结~ 多么痛的领悟!

    2013即将过去,回首走过的一年,是真学生时代终结的一年,是再次步入社会开启IT工作的一年,是从东北跨到南方第一次体会四季如春的一年,最重要的是彻底告别"光棍汉"准备年末见家长论婚 ...

  7. 深入浅出精讲面向对象设计七大原则,彻底领悟设计背后思想

    深入浅出精讲面向对象设计七大原则,彻底领悟设计背后思想 欢迎阅读 一.面向对象设计原则提出背景 二.面向对象设计七大原则总览 三.单一职责原则(SRP) 3.1定义: 3.2分析: 3.3举例: 四. ...

  8. 如何从生活中领悟设计模式

    文章推荐 Selenium 自动化测试从零实战[阅读原文] 原来这样做,才能向架构师靠近[阅读原文] Cordova App 打包全揭秘[阅读原文] TensorFlow on Android:物体识 ...

  9. 思想学习——细节决定成败

    老子说:"天下大事必作于细,天下难事必作于易".作大事必须从小事开始,天下的难事,必定从容易的作起,从小事做起,从生活的一点一滴做起.领悟细节从小事开始做起,你才会不断成长.纵观今 ...

最新文章

  1. alert 回调_element之Alert 警告
  2. 面向对象UML中类关系
  3. linux qt wifi连接,贡献自己写的,在linux,arm下的屏幕搜索wifi并连接(qt,多选择,wifi按信号排列)...
  4. 【Rxjava】通俗说Rxjava
  5. docker process tree
  6. 综合实例_管线综合支吊架施工实例赏析,工艺流程全面
  7. python代码物理_利用python求解物理学中的双弹簧质能系统详解
  8. Redhat GRUB配置错误修复
  9. spring的beanutils工具类_基于spring-beans实现工具类BeanUtils基于Class实例化注入对象及查找方法、复制属性等操作...
  10. 改善深层神经网络:超参数调整、正则化以及优化——2.8 Adam算法(Adaptive Moment Estimation)
  11. c++接口调用外部类_Java基础:Java语法糖4之内部类
  12. 奥的斯服务器显示chc,奥的斯服务器查看故障清除故障
  13. Flutter基础(四)开发Flutter应用前需要掌握的Basic Widget
  14. 基于RFID技术的智能交通解决方案
  15. 小马哥杂牌机高仿机刷机教程---史上最简单的卡刷方法。adb推送模式自动卡刷教程
  16. UTON NFT的到来将为摄影师带来全新的未来!
  17. 尚硅谷算法与数据结构学习笔记05 -- 递归
  18. excel斜线表头的制作
  19. 【echarts地图制作】下钻到乡镇/街道级别的
  20. 这样也行 使用QQ强行视频窥探MM长相(转)

热门文章

  1. 元素失去焦点(隐藏软键盘)
  2. HDU2699+Easy
  3. AIX 系统的启动和关机
  4. IE工具条不能自动显示
  5. ROS 2 index翻译(七)——用Colcon编译功能包(package)
  6. 通过docker搭建zabbix监控系统
  7. Repo lesson
  8. C#读取AD域用户信息
  9. 【单页应用】全局控制器app应该干些什么?
  10. 《C和C++代码精粹》——1.8 标准流