1.集合的同构和异构,集合同构意味着保存类型所有相同,集合异构意味着保存各类类型的对象。php
2.动态数据结构和静态数据结构。html
- 静态数据结构,例如数组在内存中是连续的存储区域,缺点是长度是固定的,新增或删除某一数据花费的时间比较多。优势能够直接访问各个数据,各个数据的地址均可以根据首地址获得,访问时间复杂度O(1)。
- 动态数据结构,例如链表在内存中不是连续的存储区域,每个节点包含节点数据和下一个节点的指针。缺点是不利于节点的随机访问。访问节点花费时间比较多,为O(n)。优势是可以动态的调整容量,插入或者删除数据方便。
- 静态数据结构的特色是由系统分配固定大小的存储空间,之后在程序运行的过程当中,存储空间的位置和容量都不会再改变。动态数据结构不肯定总的数据存储量,而是为现有的每个数据元素定义一个肯定的初始大小的空间,若干个数据元素分配若干个一样大小的空间;当问题的数据量发生变化时,数据的存储空间的大小也发生变化。
3.线性数据结构和非线性数据结构。线性数据结构包括队列和堆栈,非线性数据结构包括树和图。node
- 队列是一种以先进先出的方式管理数据的线性数据结构
- 堆栈是一种以后进后出的方式管理数据的线性数据结构
- 树是一种以层次结构组织数据的非线性数据结构
- 图是非线性数据结构,使用常见的边来链接节点
4.Java集合类API。集合类存放的都是对象的引用,而非对象自己,出于表达上的便利,咱们称集合中的对象就是指集合中对象的引用(reference)。git
- 集合类型主要有3种:set(集)、list(列表)和map(映射)。
5.泛型,泛型对象是一种集合类对象,实现泛型对象是为了使其管理的对象的类型在某个集合类创建时也被建立,这样就容许编译时能控制一些加入到该集合中的对象的类型,减少这些对象从该集合清除时的类型转换处理。程序员
问题1解决方案:队列和堆栈是两个相似链表的线性数据结构,但在使用时有更多的限制。对于通常的链表,能够经过链表的任意位置插入和删除节点进行修改,可是队列只能在一端加入节点(入队)(入栈),在另外一端一处节点(出队)(出栈),所以队列是先进先出(FIFO)数据结构,堆栈是后进先出(LIFO)数据结构。web
问题2的解决方案:线性结构是n个数据元素的有限序列。非线性结构是一个结点元素可能有多个直接前趋和多个直接后继。算法
线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构;编程
经常使用的线性结构有:线性表,栈,队列,双队列,数组,串;数组
非线性数据结构有:集合结构(没有对应关系)、树结构(一对多)、图结构或网结构(多对多)数据结构
问题3的解决方案:数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。一般状况下,精心选择的数据结构能够带来更高的运行或者存储效率。数据结构每每同高效的检索算法和索引技术有关。数据结构是指同一数据元素类中各数据元素之间存在的关系。数据结构分别为逻辑结构、存储结构(物理结构)和数据的运算。
问题1解决方案:刚学完链表的问题就在代码上进行实验,更具很蒙,就开始仿着在链表尾部进行添加的方法进行。
```
public void add(Magazine mag)
{
MagazineNode node = new MagazineNode(mag);
MagazineNode current;
if (list == null) list = node; else { current = list; while (current.next != null) current = current.next; current.next = node; }
}
针对删除的方法,经过对链表的每个节点进行内容的比对,不是就往下进行持续到尾部。可是个人这个删除有个缺陷,就是若是有删除的内容在链表中没有的话,没有报错的语句,不知道在哪里进行添加的。
public void delete(Magazine Node)
{
MagazineNode current1 = list;
if(String.valueOf(current1.magazine).equals(String.valueOf(Node))) { list = current1.next; } else { while (!(String.valueOf(current1.next.magazine).equals(String.valueOf(Node)))) { current1 = current1.next; } current1.next = current1.next.next; }
}
添加的方法写的相对比较完善,针对要添加的位置超出了整个链表的长度的话,会报出提醒的。正常的操做就是设置两个节点,而后在正确的位置进行加入新内容,而后把新内容的指针指向加入位置的后面链表,再在断开的位置进行指向新内容的地方。
ppublic void insert(int index, Magazine newMagazine)
{
MagazineNode node = new MagazineNode(newMagazine);
MagazineNode current1, current2;
int n = Int(list); if(index <= n + 1) { if(index == 1) { node.next = list; list = node; } else { current2 = list; current1 = list.next; for(int a = 1; a < index - 1; a++) { current2 = current2.next; current1 = current1.next; } if(current1 != null) { node.next = current1; current2.next = node; } else if(current1 == null) { current2.next = node; } } } else System.out.println("插入节点有问题!!!未进行添加!!!");
}
```
在这个方法里面用到了一个小方法,对链表的擦汗年高度进行判断,若是超了就会报错。PP13.1的改写则是彻底抄的课堂实践进行的,很简单,彻底的模仿(可能把以前的难关解决了就简单了)
Integer.parseInt(String.valueOf(min.number)) > Integer.parseInt(String.valueOf(current.number))
即进行两个数的比较。相似“三行的原则”把大小进行一个排序,可是是要接着后链表后面的东西进行。temp = min.number; min.number = numNode.number; numNode.number = temp;
BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
public Exception ANewException { public ANewException(String message) { super(message); } }
- <span style="color:green">A.true - <span style="color:red">**B.false**
错误解析:定义几乎是正确的,可是它必须定义一个类,而不是一个异常。异常是一个类,而ANewException应该扩展异常。类定义的标头应该是public类的,ANewException扩展异常。
本周结对学习状况
20172304方艺雯
20172323王禹涵
1.集合的同构和异构
2.动态数据结构和静态数据结构
3.线性数据结构和非线性数据结构
4.Java集合类API
本周感受好忙,要对四则运算的内容进行后期处理,还要学习第十三章,还要学习四个实验。对于十三章的内容,本觉得不多,可是在编程链的时候遇到了很大很大的困难,书上代码看不懂,很蒙的作这课堂做业,好在思路清晰,写的代码也一次就成。可是对于next的节点问题仍是不够透彻,应该在课下好好学习。其次,对于四则运算的代码,可以很完整输出计算,就像老师说的那样看到小组成功的结果,感受颇有自豪感。可是在加分项目上作的仍是不够好,对于去重的问题一直没有思路就放弃了,并且想过用倒计时的问题,想去尝试,但始终没有成果,没有应用到四则运算上,仍是有不少的遗憾...
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 136/136 | 1/1 | 15/15 | |
第二周 | 570/706 | 1/2 | 20/35 | |
第三周 | 613/1319 | 1/3 | 23/58 | |
第四周 | 1249/2568 | 1/5 | 30/88 | |
第五周 | 904/3472 | 1/6 | 30/118 | |
第六周 | 540/4012 | 1/7 | 30/118 | |
第七周 | 826/4838 | 1/7 | 30/178 | |
第八周 | 925/5763 | 2/9 | 45/223 | |
第九周 | 253/6016 | 2/10 | 55/278 | |
第十周 | 958/6974 | 1/11 | 55/333 |