数据结构-用二维数组构造列表
2014-03-18 21:28
204 查看
package com.data.struct; /** * 二位数组实现列表 * 第一行表示next * 第二行表示value * 第三行表示prev * @author Administrator * */ public class ArrayNodeList { private int[][]storage; private int head; private int free; public ArrayNodeList(int size){ storage=new int[3][size]; head=-1; free=0; for(int i=0;i<size-1;i++){ storage[0][i]=i+1; } storage[0][size-1]=-1; } /** * 获取某个位置的值 * @param index * @return */ public int getValue(int index){ return storage[1][index]; } /** * 分配内存 * @return * @throws Exception */ private int locateObject()throws Exception{ if(free==-1){ throw new Exception("out of space"); }else{ int x=free; free=storage[0][free]; return x; } } /** * 释放内存 * @param x */ private void freeObject(int x){ storage[0][x]=free; free=x; } /** * 打印 */ public void print(){ int x=head; while(x!=-1){ System.out.print(storage[1][x]+" "); x=storage[0][x]; } System.out.println(); } /** * 搜索值为k的为位置 * @param k * @return */ public int search(int k){ int x=head; while(x!=-1&&storage[1][x]!=k){ x=storage[0][x]; } return x; } /** * 插入值为value的数据 * @param value * @throws Exception */ public void insert(int value)throws Exception{ int x=locateObject(); storage[0][x]=head; storage[1][x]=value; storage[2][x]=-1; if(head!=-1){ storage[2][head]=x; } head=x; } /** * 删除位置为index的数据 * @param index * @throws Exception */ public void delete(int index)throws Exception{ if(storage[2][index]!=-1){ storage[0][storage[2][index]]=storage[0][index]; }else{ head=storage[0][index]; } if(storage[0][index]!=-1){ storage[2][storage[0][index]]=storage[2][index]; } freeObject(index); } public static void main(String[] args)throws Exception { ArrayNodeList list=new ArrayNodeList(10); list.print(); list.insert(10); list.insert(20); list.print(); list.delete(1); list.print(); list.insert(30); list.insert(40); list.print(); //list.delete(2); //list.print(); System.out.println(list.getValue(list.search(30))); } }
相关文章推荐
- java数据结构-哈希函数的构造方法
- Python-递推构造列表和字典
- __repr__等内置函数==实现使用列表实现循环数据结构
- Python的数据结构 -- 列表
- Redis数据结构和内部编码--列表(list)
- Python常用列表数据结构小结
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结
- 《数据结构》线性表:链式存储结构实现示例代码一(构造,遍历,析构)
- 数据结构:可扩散列表
- 数据结构 学习笔记(完):散列查找:散列(哈希)表,散列函数的构造,冲突处理,性能分析
- 数据结构-图-最小生成树(1)克鲁斯卡算法构造
- 数据结构 线性循环列表(约瑟夫问题)
- Python笔记——基本数据结构:列表、元组及字典
- 《深度探索C++对象模型》笔记(三)构造函数、拷贝构造和初始化列表
- [从头学数学] 第244节 Python实现数据结构:列表
- 2015年大二上-数据结构-树和二叉树-2-(3)二叉树的构造
- 10月10 日c语言 构造5*5的二维数组,使主对角线的数字为1
- 数据结构-二维数组-对称矩阵压缩存储
- CSS 构造列表
- 课程笔记 08:数据结构(清华) 列表-读写接口