java模仿顺序表

来源:互联网 发布:时间管理书籍 知乎 编辑:程序博客网 时间:2024/05/29 17:51

近来没有项目缠身,加上自己想要系统的学习一下数据结构,所以就开始了这漫漫的学习之路了;

程序猿就是要经常学习才能进步的对吧,至于写博客吗,一是为了培养习惯,二是希望给需要的人看看,三吗就是为了防止那天自己需要了,可以看看!!!

先上项目的结构图

下面就是代码了!

package com.mou.entity;/** * 链表的节点对象 + 0 *  * @author Administrator *  */public class DATA {String Key;String name;int age;public DATA() {super();// TODO Auto-generated constructor stub}public DATA(String key, String name, int age) {super();Key = key;this.name = name;this.age = age;}public String getKey() {return Key;}public void setKey(String key) {Key = key;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "DATA [Key=" + Key + ", age=" + age + ", name=" + name + "]";}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((Key == null) ? 0 : Key.hashCode());result = prime * result + age;result = prime * result + ((name == null) ? 0 : name.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;DATA other = (DATA) obj;if (Key == null) {if (other.Key != null)return false;} else if (!Key.equals(other.Key))return false;if (age != other.age)return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;return true;}}

package com.mou.entity;/** * 模仿顺序表 * @author Administrator * */public class SlType {//链表的最长存储数static final int MAXLEN = 100;DATA[] listData = new DATA[MAXLEN + 1];//链表的最大存储位置int listLen = 0;public SlType() {super();// TODO Auto-generated constructor stub}public SlType(DATA[] listData, int listLen) {super();this.listData = listData;this.listLen = listLen;}public DATA[] getListData() {return listData;}public void setListData(DATA[] listData) {this.listData = listData;}public int getListLen() {return listLen;}public void setListLen(int listLen) {this.listLen = listLen;}/** * 在指定的位置插入数据 * @param i * @param data * @return */public boolean insertData(int i,DATA data){boolean res = false;int temp;if(this.listLen>MAXLEN){System.out.println("链表已满,无法再继续插入!");return res;}if(i<1 || i>this.listLen){System.out.println("节点下标出错!");return res;}for(temp=this.listLen;temp>=i;temp--){this.listData[temp+1]=this.listData[temp];}this.listData[i]=data;this.listLen++;return true;}/** * 直接追加数据 * @param data * @return */public boolean addDate(DATA data){boolean res = false;if(this.listLen>MAXLEN){System.out.println("链表已满,无法再继续插入!");return res;}this.listData[++this.listLen] = data;return true;}/** * 删除指定位置的节点 * @param i * @return */public boolean deleteForIndex(int i){boolean res = false;if(i<1 || i>this.listLen){System.out.println("节点下标出错!");return res;}int temp = 0;//删除指定位置的数据,并且其余的节点往后移一格!for(temp=this.listLen;i<temp;i++){this.listData[i]=this.listData[i+1];}this.listData[this.listLen]=null;this.listLen--;return res;}/** * 删除指定的节点 * @param data * @return */public boolean deleteForData(DATA data){boolean res = false;int i = 0;for (DATA da : this.listData) {if(da!=null && da.equals(data)){res = true;break;}i++;}if(!res){System.out.println("找不到指定的节点!");return res;}//根据下标删除对象res = this.deleteForIndex(i);return res;}/** * 根据下标值返回指定的值 * @param i * @return */public DATA getDataByIndex(int i){DATA data = new DATA("", "", 0);if(i<1 || i>this.listLen){System.out.println("节点下标出错!");return data;}return this.listData[i];}/** * 根据关键字返回指定的值 * @param i * @return */public DATA getDataByKey(String key){for (DATA da : this.listData) {if(da!=null && da.getKey().compareTo(key)==0){return da;}}System.out.println("获取不到指定的key的数据");return new DATA("", "", 0);}/** * 打印结果 * @return */public String getAllRes(){int j = 1;String result = "";for (DATA da : this.listData) {if(da!=null){result +=j+" : "+da.toString()+"\n";j++;}}return result;}}

package com.mou.test;import com.mou.entity.DATA;import com.mou.entity.SlType;public class Test01 {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub SlType dataList = new SlType();DATA data = null;for(int i=1;i<=10;i++){data = new DATA(""+i,"0"+i,1+i);dataList.addDate(data);}System.out.println(dataList.getAllRes());System.out.println("============添加指定位置的节点================");//在指定的位置添加节点data = new DATA("new","newName",555);dataList.insertData(5, data);System.out.println(dataList.getAllRes());System.out.println("==========删除节点根据下标=========");//删除直接位置的节点dataList.deleteForIndex(4);System.out.println(dataList.getAllRes());System.out.println("=======删除节点,根据节点对象=========");//删除直接位置的节点dataList.deleteForData(data);System.out.println(dataList.getAllRes());System.out.println(dataList.getDataByIndex(1).toString());System.out.println(dataList.getDataByKey("23").toString());}}


先这样吧,其他的晚上回去在写好了!!!第一次写博客,难得啊!