数据结构
数组实现
思想,存入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); } }
链表实现
定义:一个需要储存的数据和一个链表对象的下一个值查询需要遍历,通过该类名 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; } }