一,单链表学习大纲
1)概念:每个结点除了存放数据元素外,还要存储指向下一个节点的指针,
不要求大片的连续空间,改变容量方便,无法逆向检索,要耗费一点空间存放指针。
2)实现方式:带头和不带头
3)基本操作:
(1)插入:带头和不带头节点,指定节点的后插和前插
(2)删除:带头和不带头,指定节点的删除(特殊情况最后一个只能从表头开始)
(3) 建立:尾插法(尾插法时候注意设置一个指向表位节点的指针)
和头插法(带头和不带头)注意重要应用:链表的逆置
(4) 查找:按位查找和按值查找,求表的长度
二,每日一题:剑指 Offer 06. 从尾到头打印链表
class Solution {
public int[] reversePrint(ListNode head) {
int count=0;
ListNode p=head;
while(p!=null){
count++;
p=p.next;
}
int []arr=new int[count];
for(int i=count-1;i>=0;i--){
arr[i]=head.val;
head=head.next;
}
return arr;
}
}
三,理论知识
1,Java通过方法重写和方法重载实现多态,方法重写是指子类重写了父类的同名方法,方法重载是指在同一个类中,方法的名字相同,但是参数列表不同。
2,执行顺序:父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A构造函数
非静态初始化块的执行顺序要在构造函数之前。
3,“假设利用 return 语句从 try 语句块中退出。在方法返回前,finally子句的内容将被执行。如果 finally 子句中也有一个 return 语句,这个返回值将会覆盖原始的返回值。”