线性表 顺序存储 链式存储 ---java实现
来源:互联网 发布:手机excel软件下载 编辑:程序博客网 时间:2024/05/17 23:51
首先抽象出一个线性表抽象类(包含基本的增删操作)
public abstract class MyAbstractList<E> {public abstract void add(E t);public abstract void add(int index,E t);public abstract void remove();public abstract void remove(int index);public abstract int getCount();public abstract E get(int index);public abstract String toString();public abstract boolean contains(E e);}
ArrayList2继承抽象类,并实现其中的所有抽象方法
public class ArrayList2<E> extends MyAbstractList<E>{private E[] e;private int len;private int size;ArrayList2(){this.size = 0;this.len = 10;this.e = (E[]) new Object[len];}@Overridepublic void add(E t) {// TODO Auto-generated method stubensureCap();e[size] = t;size++;}private void ensureCap() {// TODO Auto-generated method stubif(getCount()>=len){E[] temp = (E[]) new Object[len*2+1];len = len*2+1;for(int i=0;i<len;i++){temp[i] = e[i];}}}@Overridepublic void add(int index, E t) {// TODO Auto-generated method stubensureCap();for(int i=size-1;i>=index;i--){e[i+1] = e[i];}e[index] = t;size++;}@Overridepublic void remove() {// TODO Auto-generated method stube[size] = null;size--;}@Overridepublic void remove(int index) {// TODO Auto-generated method stubfor(int i=index;i<size-1;i++){e[index] = e[index+1];}e[size] = null;size--;}@Overridepublic E get(int index){if(index>0 && index<size){return e[index];}else return null;}public boolean isEmpty(){return size>0? false : true;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn size;}@Overridepublic String toString(){StringBuffer sb = new StringBuffer();sb.append("[");for(int i=0;i<size-1;i++){sb.append(e[i]).append(",");}sb.append(e[size-1]);sb.append("]");return sb.toString().trim();}@Overridepublic boolean contains(E e1){boolean bool = false;for(int i=0;i<size;i++){if(e[i] == e1){bool = true;}}return bool;}}
LinkedList2 继承抽象类,并实现方法
public class LinkedList2<E> extends MyAbstractList<E> {private int size;private Node<E> head;public LinkedList2(){this.size = 0;head = null;}@Overridepublic void add(E t) {// TODO Auto-generated method stubNode<E> e = new Node<E>(t);if(size == 0) head = e;else{Node temp = head;while(temp.next!=null){temp = temp.next;}temp.next = e;size++;}}@Overridepublic void add(int index, E t) {// TODO Auto-generated method stubif(index == 0 || index>size) add(t);else{Node current = head;Node<E> e = new Node<E>(t);for(int i=0;i<index-1;i++){current = current.next;}e.next = current.next;current.next = e;size++;}}@Overridepublic void remove() {// TODO Auto-generated method stubremove(size-1);}@Overridepublic void remove(int index) {// TODO Auto-generated method stubif(index == 0) removeFirst();else if(index == size) removeLast();else if(index<0 || index>size) ;else{Node<E> pre = head;for(int i=0;i<index-1;i++){pre = pre.next;}Node<E> current = pre.next;pre.next = current.next;size--;}}private void removeLast() {// TODO Auto-generated method stubif(size == 0) ;else{Node<E> current = head;for(int i=0;i<size-2;i++){current = current.next;}current.next = null;size--;}}private void removeFirst() {// TODO Auto-generated method stubhead = head.next;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn size;}@Overridepublic E get(int index) {// TODO Auto-generated method stubNode<E> current = head;for(int i=0;i<index-1;i++){current = current.next;}return current.e;}@Overridepublic String toString() {// TODO Auto-generated method stubStringBuffer sb = new StringBuffer();sb.append("[");Node<E> current = head;for(int i=0;i<size;i++){sb.append(current.e).append(",");}sb.append("]");return sb.toString().trim();}@Overridepublic boolean contains(E e) {// TODO Auto-generated method stubif(size == 0 ) return false;else{Node<E> current = head;for(int i=0;i<size-1;i++){if(current.e == e) return true;current = current.next;}return false;}}}/** * 链表结点 */class Node<E>{E e;Node<E> next;Node(){this.next = null;}Node(E ee){e = ee;next = null;}}
0 0
- 线性表 顺序存储 链式存储 ---java实现
- 线性表的顺序存储实现和链式存储实现
- 【线性表】顺序存储、链式存储的实现及操作
- (2) JAVA:线性表的顺序存储与链式存储
- 线性表(顺序存储/链式存储)
- 线性表(顺序存储,链式存储)
- Java实现链式存储的线性表
- java实现线性表中的链式存储
- 【线性表一:】两种存储结构的代码实现:顺序存储和链式存储
- java实现线性表的顺序存储
- 线性表的Java实现--顺序存储
- java 实现线性表之顺序存储
- 线性表的顺序存储结构与链式存储结构
- 线性表的顺序存储和链式存储
- 线性表中顺序存储和链式存储
- 线性表---顺序存储结构与链式存储结构比较
- 线性表包括顺序存储结构和链式存储结构
- 线性表之顺序存储结构和链式存储结构
- 新手学习C++笔记1:调试错误之找不到标识符
- VMware无法使用64位操作系统
- 第一篇
- 个人笔记(Oracle)—02
- 欧拉回路及欧拉路的判断
- 线性表 顺序存储 链式存储 ---java实现
- scalable high performance main memory system Using PCM Technology
- hd 2021 发工资咯:)
- 单源最短路径(算法导论24章)
- linux下乱码问题总结
- 自己写配置文件
- 不阻止我们与全球检查
- hdu 4907 Task schedule
- destoon栏目首页加页码