ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2022-07-25 第四小组 王星苹 学习笔记

2022-07-25 21:34:13  阅读:94  来源: 互联网

标签:Node 25 结点 07 链表 2022 new data public


                                       学习心得                                          
               第二种多态形式(向下转型),子类 子类对象 = new 父类();发生向下转型的前提,要先发生向上转型,才能通过强转再转成子类类型

心情

今天讲链表,和数组不一样,绕起来非常晕,但是后来周围人给我讲明白了

* 多态 * 编译看左边 运行看右边 * 多态形成的三个条件 * 1.有继承 * 2.有重写 * 3.有父类对象指向子类引用 * * 第一种多态形式 (向上转型) * 父类 父类对象 = new 子类(); * * 第二种多态形式(向下转型) * 子类 子类对象 = new 父类(); * 发生向下转型的前提,要先发生向上转型,才能通过强转再转成子类类型 * * instanceof关键字:判断某一个对象是否是某一个类的实例
public class Ch01 {


    public static void main(String[] args) {
        Dog dog = new Dog();
        Cat cat = new Cat();
        Animal animal1 = dog;
        Animal animal2 = cat;
//        dog = (Dog)cat;
//        dog = (Dog) new Animal();
        dog = (Dog) animal1;
        dog = (Dog) animal2;
    }
}
 

public class Ch02 {


    // 无敌方法
    public Object show(Object ... obj){


        return true;
    }


    @Override
    public boolean equals(Object obj) {
        if(obj instanceof Person){
            Person person = (Person) obj;
        }
        return super.equals(obj);
    }


    public static void main(String[] args) {
        Object obj = new Person();
        obj = new Ch02();
        Ch02 ch02 = new Ch02();
        ch02.show("",1,'a',1.5,true,obj);
    
*  匿名对象
*  语法:
*  new类名();
*
*  功能:和正常有名字的对象的功能是相同的
*     依然具备了调用属性,方法的功能
* 使用场景:多数是用在传参,实参,多数情况下配合构造器使用
*
* 好处:节约资源

 

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 *   链表
 *   在内存当中,数组和链表都是最基本的数据结构,表,或者是线性表
 *   线性表,线性的结构,他是一个含有n>=0个结点的有序数列
 *   有且只有一个上一个结点,只有一个下一个结点
 *   有头有尾的一条线
 *   单向链表:在维护一个结点自身的值的同时,还要维护它下一个结点的值指向
 *   双向链表:在维护一个结点自身的值的同时,还要维护它的上一个和下一个结点的值的指向
 

 * 多态
 * 向上转型:父类对象->子类引用
 * 向下转型:子类引用->父类对象  前提,必须先发生向上转型
 *
 * instanceof:判断某一个对象是否是某一个类的实例
public class Ch01 {
    public Object show(){
        return null;
    }
}


public class ThatsAll extends Ch01{
    public Integer show(){
        return null;
    }
}
 

链表:

package afternoon.test;


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结点后面
            //我是原来last结点的下一个结点
            last.setNext(node);
//            last = 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){
            Node next = node.getNext();
            newNode.setNext(next);
            node.setNext(newNode);
        }else{
            first = newNode;
            last = newNode;
        }
        return true;
    }
    //默认删除头部的数据
    public boolean removefirst(){
        if (size<0){
            return false;
        }
        if (first!=null){
            first = first.getNext();
            size--;
        }
        return true;
    }
    //删除尾部的数据
    public boolean removelast(){
        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 Integer get(int index){
        return getNode(index).getData();
    }


    public Node getNode(int index){
        if (index<0){
            index=0;
        }
        if (index>=size-1){
            index=size-1;
        }
        //找到第index个
        Node cursor = first;
        for (int i = 0; i < index; i++) {
            cursor = cursor.getNext();
        }
        return cursor;
    }
}




package afternoon.test;


/**
 *  单向链表
 */
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 +
                '}';
    }
}
package afternoon.test;


public class Demo {
    public static void main(String[] args) {
        SuperLinked superLinked = new SuperLinked();
        superLinked.add(1);
        superLinked.add(2);
        superLinked.add(3);
        superLinked.add(1,100);//添加
        superLinked.removefirst();//删第一个
        superLinked.removelast();//删尾部
        superLinked.remove(2);//删除指定下标的元素
        System.out.println(superLinked.getNo

 




☯☯☯☯☯☯☯☯☯☯☯☯


标签:Node,25,结点,07,链表,2022,new,data,public
来源: https://www.cnblogs.com/wxp0909/p/16518386.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有