2022.07.25 第七小组 王茜 学习笔记
作者:互联网
多态:
编译看左边,运行看右边
多态的三个条件:
1、有继承
2、有重写
3、有父类对象指向子类引用
多态的形式:
第一种多态的形式(向上转型)
父类 父类对象 = new 子类();
第二种多态形式 (向下转型):
发生向下转型的前提,要先发生向上转型,才能通过强转转成子类类型
instanceof关键字:判断某一个对象是否是某一个类的实例,返回值是boolean类型
匿名对象:
语法:new 类名();
功能:
和正常有名字的对象的功能是相同的,依旧具备了调用属性、方法的功能
使用场景:多数用来传参,实参,多数情况下配合构造器使用
好处:节约资源
链表:是一个数据结构
单向链表:在维护一个节点的自身的值的同时,还要维护它的下一个值的指向
双向链表:在维护一个节点的自身的值的同时,还要维护它的上一个和下一个值的指向
public class Node
public class Node {
//单向
private Integer data;
private Node next;
public Node() {
}
public Node(Integer data, Node next) {
this.data = data;
this.next = next;
}
public Integer getData() {
return data;
}
public void setData(Integer data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
@Override
public String toString() {
return "Node{" +
"data=" + data +
", next=" + next +
'}';
}
}
public class SuperLinked
public class SuperLinked {
private int size;//链表的长度
private Node first;//链表的第一个结点
private Node last;//链表的最后一个结点
public SuperLinked(){
}
public boolean add(Integer data){
//把数据 添加到链表的尾部
Node node=new Node(data,null);
//把传入的数据结构建成一个结点
if (first==null){
first=node;
}else {
last.setNext(node);
}
last=node;
size++;
return true;
}
public boolean add(int index,Integer data){
//在指定位置添加元素
Node node = getNode(index);
Node newNode =new Node(data,null);
if (node !=null){
newNode.setNext(node.getNext());//命名对象
node.setNext(new Node());
}else {
//如果插入的位置时null,只有一种情况,就是整个链表都是空
first=newNode;
last=newNode;
}
size++;
return true;
}
public boolean remove1(){
//默认删除头部的数据
if (first!=null){
first =first.getNext();
size--;
}
return true;
}
public boolean remove2() {
//默认删除尾部的数据
if (size <= 0) {
return false;
}
if (size < 2) {
first=null;
last=null;
size--;
return true;
}
if (last != null) {
last = getNode(size - 2);
last.setNext(null);
size--;
}
return true;
}
//删除指定位置
public boolean remove(int index){
if (size<0){
return false;
}
if (size == 1) {
first=null;
last=null;
size--;
return true;
}else {
Node node=getNode(index-1);
node.setNext(node.getNext().getNext());
}
size--;
return true;
}
//修改指定位置的元素
public boolean set (int index,Integer data){
Node node =getNode(index);
node.setData(data);
return true;
}
public Node getNode(int index){
if (index<0){
index=0;
}
if (index>=size-1){
index=size-1;
}
Node cursor=first;
for (int i = 0; i < index; i++) {
cursor=cursor.getNext();
}
return cursor;
}
}
刚开始学习链表的时候,老师通过excel表格来演示,这样很直观的体现了链表的结构。
有两天没有更新是因为放假休息以及上的课都是复习的,没有新学习知识。
标签:Node,25,node,next,链表,2022.07,data,public,王茜 来源: https://www.cnblogs.com/wx1019/p/16518618.html