ruijiege

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

数据结构

数组实现

思想,存入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

 

posted on 2019-08-05 13:51  哦哟这个怎么搞  阅读(782)  评论(0编辑  收藏  举报