标签:push 解决问题 顺序 表示 集合 自定义 目标 markdown ima
十二章在讲编程中的时间复杂度的概念,时间复杂度越低,程序运行效率越高。时间复杂度的计算可通过寻找运行次数最多的程序,计算他的运行次数,取n的最高次方的极数,即为程序的时间复杂度。
栈可以理解为一类数据的集合,栈中的元素可以写入,也可以读出。元素存在先后次序。先入栈的先被读出。栈可用数组,链表两种形式实现。应注意使用数组的实现链表时要注意数组大小,在push过程中可添加扩大数组大小的程序。这样的栈通过数组下表定义顺序。
栈实现的链表通过setnext来实现链接
泛型:通过泛型来定义类class Box<T>
。可使栈使用更加灵活。栈中所存放的元素可通过使用时定义来实现。T即为战中存放数据的类型。如定义一个int型的栈Box<Integer> num1 = new Box();
,即栈中存放int型的变量。若要对栈中的元素进行操作需要定义int型变量,或者需要定义方法返回值为int时,都可使用T来代替。而声明该类的对对象时,应Box<T> num1
来定义。
问题1解决方案:起初被class Box<T>
迷惑,不会使用。经百度及课本查询,得知该类名与其他类名无异,只是可以使程序更加灵活。
问题2解决方案:时间复杂度可通过计算运行次数最多的程序来看。可通过数学计算方法来计算。
问题1:程序运行时,提示pop方法出错。
问题1解决方案:经单步调试,发现count数值有误。count表示节点个数,而栈中数组定义从0开始。因此stack[count]
本就为空。而count修改为count-1即可解决问题。
问题2:在用数组实现栈时,但数组下标会随着插入,删除,排序而改变,不方便的第二次操作。并且栈头也会丢失掉。
问题2解决方案:为解决问题,我决定变换思路。起初我一节点为单位,实现节点之间的连接与断开连接。这样容易导致数组下标排序混乱。所以我决定将整个数组连接好,固定节点将数值放到每个节点盒子里,所以这样数组下标可以保持不变,从而解决问题。
问题3解决办法,通过对比测试,发现该代码在运行时并未出错,可能为IDEA在运行时自动进行转换。
问题4解决办法:通过网络查找,使用两个数组进行编写,一个用于接收数据,另一个用于重组,既保证元素的灵活操作,又保证了数组的稳定性。
未考试
正确使用Markdown语法加1分:
模板中的要素齐全加1分
教材学习中的问题和解决过程, (加4分)
代码调试中的问题和解决过程, (加2分)
周五前发博客的加1分
进度条中记录学习时间与改进情况的加1分
错题学习深入的加1分
感想,体会不假大空的加1分
数据结构的学习要注意各种结构的特点,注意数据与数据连接时的细节,注意数据的结构特点,数据的存储(顺序还是链式),能进行的操作,以及操作的关键语句
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 | |
第五周 | 500/1000 | 3/7 | 22/60 | |
第六周 | 700/1300 | 2/9 | 22/90 | |
第七周 | 1300/1000 | 3/7 | 30/60 |
计划学习时间:20小时
实际学习时间:22小时
标签:push 解决问题 顺序 表示 集合 自定义 目标 markdown ima
原文地址:https://www.cnblogs.com/zjwbk/p/11781049.html