• 数组存储和链表存储


    数据结构

    数组实现

    思想,存入Objiect类每存入一次就for一次,当数组不够的时候需要判断然后扩容

    实现增删改查

    package cn.jiedada._02inArray;
    
    import java.util.Arrays;
    
    /*
     * 存入任意数据
     * 扩容object类的大小
     * 打印我们想要的内容
     * 实现增删改查
     * */
    public class inArray {
        Object[] date;
        int indexsize=0;
        int captipy;
        //调用自己的方法
        public inArray() {
            this(5);
        }
        public inArray(int captipy) {
            this.captipy=captipy;
            date=new Object[captipy];
        }
        public void add(Object obj){
            //对数组进行扩容
            if(indexsize>date.length-1){
                Object[] newdate=new Object[indexsize+20];
                System.arraycopy(date, 0, newdate, 0, indexsize);
                date=newdate;
            }
            date[indexsize]=obj;
            indexsize++;
        }
        /*覆写String
         * */
        @Override
        public String toString() {
            Object[] object = new Object[indexsize];
            System.arraycopy(date, 0, object, 0, indexsize);
            return Arrays.toString(object);
        }
        private void judje(int index) {
            /*if(index<0|index>indexsize){
                System.out.println("请输入正确的数"+indexsize);
            }*/
            if(index<0|index>indexsize)
            throw new ArrayIndexOutOfBoundsException("请输入正确的数0~"+indexsize);
        }    //查询
        public Object selectElemple(int index){
            judje(index);
            return date[index];
        }
        //查询
        public int selectNameElement(String name){
            for(int i=0;i<date.length;i++){
                if(date[i].equals(name)){
                    return i;
                }
            }
            return -1;
        }
        //删除
        public void deleteElement(int index){
            judje(index);
            System.arraycopy(date, index+1, date, index,indexsize-index-1);
            indexsize--;    
        }
        public void deleteElement(String name){
            int index = selectNameElement(name);
            deleteElement(index);
        }
    
    }
    View Code

    链表实现

    定义:一个需要储存的数据和一个链表对象的下一个值查询需要遍历,通过该类名 next来存放下一个位置的地址值,

    package cn.jiedada._03LinkList;
    
    public class LinkList {
        Node frist;//创建头指针
        public void add(Object object){
            Node node = new Node(object);
            //判断是否有头指针
            if(frist==null){
                frist=node;
            }else{
                Node temp=frist;
                //循环遍历下一个结点,找到最后一个节点
                while(temp.next!=null){
                    temp=temp.next;
                }
                //存入值
                temp.next=node;
            }
        }
        @Override
        public String toString() {
            StringBuilder stringBuilder = new StringBuilder("[");
            Node temp;
            temp=frist;
            if(temp==null){
                return null;
            }
            //需要循环遍历,因为先要判断是否有值,如果没有值直接退出
            while(temp!=null){
                //判断下一个是不是空值。
            if(temp.next!=null){
                stringBuilder.append(temp.object).append(",");
                //为什么在这不能temp=temp.next;
            }else{
                stringBuilder.append(temp.object).append("]");
            }
            temp=temp.next;
        }
            return stringBuilder.toString();
        }
        
    }
    //链表的址值
    class Node{
        Object object;
        Node next;//存放下一个地址值
        public Node() {
            // TODO Auto-generated constructor stub
        }
        public Node(Object obj) {
            this.object=obj;
        }
    }
    View Code
  • 相关阅读:
    2-SAT( tarjan应用 )
    字节流和字符流
    linux 安装kafka
    网络编程入门
    Java代码中的魔法值
    动态SQL
    update语句的返回值是什么
    dual表
    diy diy diy台式机走起
    js数组赋值,改变其中一个,另一个数组也会改变(vue中数据绑定)
  • 原文地址:https://www.cnblogs.com/xiaoruirui/p/11302565.html
Copyright © 2020-2023  润新知