java无序,java实现无序数组结构

packagecom.ghostwu;classMyDefineArrayStruct {private int[] arr;private intcurLen;private intlength;publicMyDefineArrayStruct(){

curLen= 0;

length= 30;

arr= new int[length];

}public MyDefineArrayStruct( int_length ) {

curLen= 0;

length=_length;

arr= new int[length];

}public intlength (){returncurLen;

}public voidprint(){for( int i = 0; i < curLen; i++){

System.out.print( arr[i]+ "\t");

}

System.out.println( );

}public boolean add( int_value ){if( curLen >=length ){return false;

}else{

arr[curLen++] =_value;

}return true;

}public int getItem( int_index ){if( _index < 0 || _index >curLen ) {

System.out.println("数组下标越界");

}returnarr[_index];

}public int find( int_value ){inti;for( i = 0; i < curLen; i++){if( arr[i] ==_value ){break;

}

}if( i ==curLen ) {return -1;

}returni;

}public boolean delItem( int_value ){int res =find( _value );if( res == -1 ) return false;else{if( res == curLen - 1) {

curLen--;

}else{for( int i = res; i < curLen - 1; i++){

arr[i]= arr[i+1];

}

curLen--;

}

}return true;

}public boolean updateItem( int _oldValue, int_newValue ){int res =find( _oldValue );if( res == -1){

System.out.println("数组中不存在" +_oldValue );return false;

}else{

arr[res]=_newValue;return true;

}

}

}public classSelfDefineArrayStruct {public static voidmain(String[] args) {

MyDefineArrayStruct arr= new MyDefineArrayStruct( 10);

arr.print();

arr.add(10);

arr.add(20);

arr.add(30);

arr.add(40);

arr.add(100);

arr.print();

arr.delItem(10);

arr.print();

System.out.println( arr.length() );

arr.delItem(20);

System.out.println( arr.length() );

arr.updateItem(30, 300);

arr.updateItem(40, 400);

System.out.println( arr.length() );

arr.print();

}

}

/* * 基于列表实现无序)词典结构 */ package dsa; public class Dictionary_DLNode implements Dictionary { private List L;//存放条目的列表 private EqualityTester T;//判等器 //构造方法 public Dictionary_DLNode() { this(new EqualityTesterDefault()); } //默认构造方法 public Dictionary_DLNode(EqualityTester t) { L = new List_DLNode(); T = t; } /***************************** ADT方法 *****************************/ //查询词典结构当前的规模 public int getSize() { return L.getSize(); } //判断词典结构是否为空 public boolean isEmpty() { return L.isEmpty(); } //若词典中存在以key为关键码的条目,则返回其中的一个条目;否则,返回null public Entry find(Object key) { Iterator P = L.positions(); while (P.hasNext()) { Position pos = (Position)P.getNext(); Entry entry = (EntryDefault) pos.getElem(); if (T.isEqualTo(entry.getKey(), key)) return entry; } return null; } //返回由关键码为key的条目组成的迭代器 public Iterator findAll(Object key) { List list = new List_DLNode(); Iterator P = L.positions(); while (P.hasNext()) { Position pos = (Position)P.getNext(); Entry entry = (EntryDefault) pos.getElem(); if (T.isEqualTo(entry.getKey(), key)) list.insertLast(entry); } return new IteratorElement(list); } //插入条目(key, value),并返回该条目 public Entry insert(Object key, Object value) { Entry entry = new EntryDefault(key, value);//创建新条目 L.insertFirst(entry);//将新条目插至表首,并 return entry;//返回null标志 } //若词典中存在以key为关键码的条目,则将摘除其中的一个并返回;否则,返回null public Entry remove(Object key) { Iterator P = L.positions(); while (P.hasNext()) {//逐一对比 Position pos = (Position)P.getNext();//各个位置 Entry entry = (EntryDefault) pos.getElem();//处的条目 if (T.isEqualTo(entry.getKey(), key)) {//若发现key已出现在某个条目中,则 Entry oldEntry = entry;//先保留该条目 L.remove(pos);//删除该条目 return oldEntry;//最后返回原先的条目 } }//若此循环结束,说明key尚未在词典中出现,因此 return null;//返回null标志 } //返回词典中所有条目的一个迭代器 public Iterator entries() { return new IteratorElement(L); }//直接利用List接口的方法生成元素迭代器 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值