标签:[] 个数 span 基本概念 static ret stat 异常 maxsize
基本操作如下:
线性表的抽线数据类型用Java接口描述如下:
1 /** 2 * 3 * @author Accper 4 * 5 */ 6 public interface IList { 7 // 线性表置空操作 8 public void clear(); 9 10 // 判断线性表是否为空操作 11 public boolean isEmpty(); 12 13 // 获取线性表中元素的长度操作 14 public int length(); 15 16 // 获取指定位置上面的元素操作 17 public Object get(int i); 18 19 // 在指定位置上面插入元素的操作 20 public void insert(int i, Object x); 21 22 // 删除指定位置上面的元素的操作 23 public void remove(int i); 24 25 // 查找指定元素的位置首次出现的位置操作 26 public int indexOf(Object x); 27 28 // 显示线性表中的内容操作 29 public void display(); 30 }
1 /** 2 * 3 * @author Accper 4 * 5 */ 6 public class SqList implements IList { 7 // 线性表存储空间 8 private Object[] listElem; 9 // 线性表的当前长度 10 private int curLen; 11 12 // 顺序表类的构造函数,构造一个存储空间容量为maxSize的线性表 13 public SqList(int maxSize) { 14 // TODO Auto-generated constructor stub 15 curLen = 0; 16 listElem = new Object[maxSize]; 17 } 18 19 // 将一个已经存在的线性表置成空表 20 public void clear() { 21 // TODO Auto-generated method stub 22 // 置顺序表的当前长度为0 23 curLen = 0; 24 } 25 26 // 判断线性表中的数据元素的个数是否为0,若为0则返回true,否则返回false 27 public boolean isEmpty() { 28 // TODO Auto-generated method stub 29 return curLen == 0; 30 } 31 32 // 求线性表中的数据元素的个数并返回其值 33 public int length() { 34 // TODO Auto-generated method stub 35 // 返回顺序表的当前长度 36 return curLen; 37 } 38 39 // 读取到线性表中的第i个数据元素并由函数返回其值,其中i的取值范围为0≤i≤length()-1,若i不在此范围则抛出异常 40 public Object get(int i) { 41 // TODO Auto-generated method stub 42 if (i < 0 || i >= curLen) { 43 throw new RuntimeException("第" + i + "个元素不存在"); 44 } 45 return listElem[i]; 46 } 47 48 // 在线性表的第i个数据元素之前插入一个值位x的数据元素 49 public void insert(int i, Object x) { 50 // TODO Auto-generated method stub 51 // 判断表是否满了 52 if (curLen == listElem.length) { 53 throw new RuntimeException("存储空间已经满了,无法插入新的元素"); 54 } 55 // 插入的位置不合法 56 if (i < 0 || i > curLen) { 57 throw new RuntimeException("插入的位置不合法"); 58 } 59 // 必须要从最后一个元素开始依次逐个后移动,直到第i个数据元素移动完毕为止。 60 for (int j = curLen; j > i; j--) { 61 listElem[j] = listElem[j - 1]; 62 } 63 listElem[i] = x; 64 curLen++; 65 } 66 67 public void remove(int i) { 68 // TODO Auto-generated method stub 69 if (i < 0 || i > curLen - 1) { 70 throw new RuntimeException("删除的位置不合法"); 71 } 72 for (int j = i; j < curLen; j++) { 73 listElem[j] = listElem[j+1]; 74 } 75 curLen--; 76 } 77 78 // 返回线性表中首次出现指定的数据元素的位序号,若线性表中不包含此数据元素,则返回-1 79 public int indexOf(Object x) { 80 // TODO Auto-generated method stub 81 for (int i = 0; i < curLen; i++) { 82 if (listElem[i].equals(x)) { 83 return i; 84 } 85 } 86 return -1; 87 } 88 89 // 输出线性表中的数据元素 90 public void display() { 91 // TODO Auto-generated method stub 92 for (int i = 0; i < curLen; i++) { 93 System.out.print(listElem[i] + " "); 94 } 95 System.out.println(); 96 } 97 98 // 测试 99 public static void main(String[] args) { 100 SqList sqList = new SqList(10); 101 sqList.insert(0, "a"); 102 sqList.insert(1, "z"); 103 sqList.insert(2, "d"); 104 sqList.insert(3, "m"); 105 sqList.insert(4, "z"); 106 int order = sqList.indexOf("z"); 107 if (order!=-1) { 108 System.out.println("顺序表中第一次出现的值为z的数据元素的位置为:"+order); 109 }else { 110 System.out.println("顺序表中不包括z元素"); 111 } 112 } 113 }
标签:[] 个数 span 基本概念 static ret stat 异常 maxsize
原文地址:https://www.cnblogs.com/accper/p/9136466.html