zoukankan      html  css  js  c++  java
  • 算法——线性表之顺序存储结构

    概念:

    • 线性表顺序存储结构中的元素拥有一个直接前驱元素,和一个直接后继元素;线性表的第一个元素只有直接后继元素,最后一个元素只有直接前驱元素
    • 线性表一旦创建,长度一般都是固定的,这是它的最大容量
    • 线性表中元素个数只能小于等于线性表长度

    线性表的基本操作:

      1 public class SeqList {
      2     
      3     final int defaultSize=10;
      4     int maxSize;// 顺序表的最大长度
      5     int size;// 线性表的当前长度
      6     static Object[] listArray;//存储线性表的数组
      7     
      8     
      9     public SeqList(int size) {
     10         initiate(size);
     11     }
     12     
     13     public SeqList() {
     14         initiate(defaultSize);
     15     }
     16     
     17     //初始化线性表
     18     public void initiate(int sz) {
     19         maxSize=sz;
     20         size=0;
     21         listArray=new Object[sz];
     22     }
     23     
     24     //线性表的插入
     25     public void insert(int i,Object obj) throws Exception{
     26         //线性表已经满了
     27         if(size==maxSize) {
     28             throw new Exception("线性表已经满了");
     29         }
     30         if(i==0) {
     31             listArray[i]=obj;
     32         }else {
     33             //插入位置越界
     34             if(i<0||i>maxSize) {
     35                 throw new Exception("参数有误");
     36             }else {
     37                 for(int j=size;j>=i;j--) {
     38                     listArray[j]=listArray[j-1];
     39                 }
     40                 listArray[i]=obj;
     41                 size++;
     42             }
     43         }
     44         
     45     }
     46     
     47     //线性表的删除
     48     public void delete(int i) throws Exception{
     49         if(size==0) {
     50             throw new Exception();
     51         }
     52         if(i<0||i>maxSize) {
     53             throw new Exception("参数有误");
     54         }else {
     55             for(int j=i;j<=size;j++) {
     56                 listArray[j-1]=listArray[j];
     57             }
     58             listArray[size]=null;
     59             size--;
     60         }
     61         
     62     }
     63     
     64     
     65     //获取线性表中的元素
     66     public Object getData(int i)throws Exception{
     67         if(size==0) {
     68             throw new Exception("顺序表为空,无法返回元素");
     69         }
     70         if(i<0||i>maxSize) {
     71             throw new Exception("参数错误");
     72         }
     73         return listArray[i];
     74     }
     75     
     76     //获取线性表的长度
     77     public int getSize() {
     78         return listArray.length;
     79     }
     80     
     81     //判断线性表是否为空
     82     public boolean isNull() {
     83         if(listArray.length==0) {
     84             return true;
     85         }
     86         return false;
     87     }
     88     
     89     public static void main(String[] args) throws Exception {
     90         SeqList list=new SeqList(10);
     91         list.insert(0,0);
     92         list.insert(1,1);
     93         list.insert(2,2);
     94         list.insert(3,3);    
     95         list.insert(4,4);
     96         printArr(listArray);
     97         list.delete(3);
     98         System.out.println();
     99         printArr(listArray);
    100     }
    101     
    102     
    103     public static void printArr(Object[] obj) {
    104         for (Object object : obj) {
    105             System.out.print(object+"-");
    106         }
    107     }
    108     
    109 }

     

  • 相关阅读:
    进度条加载
    插件
    倒计时
    阿里云oss教程
    拖拽排序插件 ---- Dragula
    预览图片代码
    Error: spawn xxxx ENOENT原因与解决
    关于环境配置的随笔
    js下载文件
    QuickStart系列:docker部署之redis
  • 原文地址:https://www.cnblogs.com/wugongzi/p/11172107.html
Copyright © 2011-2022 走看看