JAVA数据结构---顺序表
来源:互联网 发布:pr导出淘宝视频 编辑:程序博客网 时间:2024/06/06 03:37
定义接口
package LinerTable;public interface ListIntf { public abstract int size(); public abstract void clear(); public abstract boolean isEmpty(); public abstract Object get(int i); public abstract int indexOf(Object obj); public abstract Object getPre(Object obj); public abstract Object getNext(Object obj); public abstract void insertElementAt(Object obj, int i); public abstract Object remove(int i); public abstract Object remove(Object obj);}
定义线性表
package LinerTable;public class Sqlist implements ListIntf { // 线性表的长度 public static final int MAXSIZE = 100; // 定义数组 Object[] elem = new Object[MAXSIZE]; private int len = 0; public int getMAXSIZE() { return MAXSIZE; } /** * 接口的实现 */ // 线性表的大小 public int size() { return len; } // 清空线性表 public void clear() { len = 0; } // 判断线性表是否为空 public boolean isEmpty() { if (len == 0) return true; return false; } // 得到线性表的元素 public Object get(int i) { if (len == 0) return null; if (i < 1 || i > len) return null; return elem[i - 1];// 查找不用循环,相当于数组引用 } // 根据数据返回线性表中的下标 public int indexOf(Object obj) { for (int i = 0; i < len; i++) { if (elem[i].equals(obj)) return i + 1; } return -1; } // 根据内容查找前驱元素 public Object getPre(Object obj) { int i = indexOf(obj); if (i == -1) return null; else if (i == 1) return null; return elem[i - 2]; } // 如果obj是线性表中的元素,则返回下一个元素 public Object getNext(Object obj) { int i = indexOf(obj); if (i == -1) return null; else if (i == len) return null; return elem[i]; } // 在指定的位置插入元素 public void insertElementAt(Object obj, int i) { if (len == MAXSIZE) { System.out.println("线性表已经满了,溢出."); return; } else if (i < 1 || i > len + 1) { System.out.println("插入位置非法."); return; } for (int j = len - 1; j > i - 1; j--) elem[j + 1] = elem[j]; elem[i - 1] = obj; len++; return; } // 删除元素,并且返回删除的值 public Object remove(int i) { Object obj; if (i < 1 || i > len) { System.out.println("删除位置非法."); return null; } obj = elem[i - 1]; for (int j = i - 1; j < len - 1; j++) { elem[j] = elem[j + 1]; } len--; return obj; } // 根据内容删除元素,返回其值,长度减1 public Object remove(Object obj) { int i = indexOf(obj); if (i == -1) { System.out.println("要删除的元素不存在."); return null; } return remove(i); } /** * 新增的方法 */ public void printList() { if (len == 0) { System.out.println("线性表为空."); return; } System.out.println("线性表中的元素是:"); for (int i = 0; i < len; i++) System.out.print(elem[i].toString() + " "); System.out.println(); }}
测试主类:
package LinerTable;import java.util.Scanner;public class MainTest { public static void main(String[] args) { System.out.println("开始========================="); System.out.println("构造========================="); Object obj; int n; Scanner input = new Scanner(System.in); Sqlist sl = new Sqlist(); System.out.println("表长:" + sl.size()); // 构造5个元素的线性表 System.out.println("插入5个元素==================="); for (int i = 0; i < 5; i++) { System.out.println("插入元素:"); obj = input.next(); sl.insertElementAt(obj, sl.size() + 1); } System.out.println("表长:" + sl.size()); sl.printList(); // 增加元素 System.out.println("增加========================="); System.out.println("增加元素:"); System.out.println("元素:"); obj = input.next(); System.err.println("位置:"); n = Integer.parseInt(input.next()); sl.insertElementAt(obj, n); System.out.println("表长:" + sl.size()); sl.printList(); // 查找元素 System.out.println("查找========================="); System.out.println("元素查找:"); obj = input.next(); n = sl.indexOf(obj); if (n != -1) System.out.println("元素" + obj + "位于第" + n + "位"); System.out.println("位置:"); n = Integer.parseInt(input.next()); obj = sl.get(n); if (obj != null) System.out.println("元素" + obj + "位于第" + n + "位"); // 删除元素 System.out.println("位置删除========================="); System.out.println("删除元素"); System.out.println("位置:"); n = Integer.parseInt(input.next()); obj = sl.remove(n); if (obj != null) System.out.println("删除的元素是:" + obj); System.out.println("表长:" + sl.size()); sl.printList(); System.out.println("元素删除========================="); System.out.println("元素:"); obj = input.next(); Object obj1 = sl.remove(obj); if (obj != null) System.out.println("删除的元素是:" + obj1); System.out.println("表长:" + sl.size()); sl.printList(); input.close(); System.out.println("结束========================="); }}
运行结果:
开始=========================
构造=========================
表长:0
插入5个元素===================
插入元素:
12
插入元素:
32
插入元素:
543
插入元素:
564
插入元素:
65
表长:5
线性表中的元素是:
12 32 543 564 65
增加=========================
增加元素:
元素:
32
位置:
3
表长:6
线性表中的元素是:
12 32 32 564 564 65
查找=========================
查找元素:
32
元素32位于第2位
位置:
3
元素32位于第3位
位置删除=========================
删除元素
位置:
3
删除的元素是:32
表长:5
线性表中的元素是:
12 32 564 564 65
元素删除=========================
元素:
564
删除的元素是:564
表长:4
线性表中的元素是:
12 32 564 65
结束=========================
0 0
- JAVA数据结构---顺序表
- java 数据结构--顺序表
- java 数据结构之顺序表
- JAVA数据结构之顺序表
- java数据结构之顺序表
- java数据结构(顺序表)
- java实现顺序表数据结构
- Java数据结构-线性表(顺序表)
- 数据结构Java 线性表与顺序表
- Java,数据结构,线性表,顺序实现
- 1-java数据结构顺序表的实现
- Java实现数据结构与算法-顺序表
- 数据结构之顺序表Java实现
- 数据结构之顺序表(java版)
- 数据结构-顺序表Java简单实现
- 线性表-顺序存储(Java数据结构)
- 数据结构——Java实现顺序表
- Java与数据结构(一) 顺序表
- 传感器模块与单片机的无线连接
- Django入门笔记
- 数据取证中对磁盘结构和工作原理的记录
- Android不常见系统控件一览
- java在内存中的类图学习笔记
- JAVA数据结构---顺序表
- LatentSVM 算法
- centos7没有安装ifconfig命令的解决方法
- Java中的拦截器、过滤器、监听器
- Leetcode:36. Valid Sudoku(JAVA)
- java设计模式--责任链(二)
- android开发android4.1(API16)修改linearlayout高度闪退
- 矩阵形式的MMSE算法推导
- php代码加密