zoukankan      html  css  js  c++  java
  • 1.线性表的数据结构定义及测试

    数据结构之线性表

    1.线性表的基本操作定义

     1 package com.neusoft.List;
     2 
     3 /**
     4  * @author SimonsZhao 
     5  * 线性表的基本操作 
     6  *1.线性表置空
     7  *2.线性表判空
     8  *3.求线性表长度
     9  *4.得到第i个元素的值
    10  *5.线性表第i个元素之前插入一个元素
    11  *6.删除并返回线性表中的第i个元素
    12  *7.线性表中首次出现指定数据元素的位置序号
    13  *8.输出线性表中的元素
    14  */
    15 public interface IList {
    16     //1.线性表置空
    17     public void clear();
    18     //2.线性表判空
    19     public boolean isEmpty();
    20     //3.求线性表长度
    21     public int length();
    22     //4.得到第i个元素的值
    23     public Object get(int i);
    24     //5.线性表第i个元素之前插入一个元素
    25     public void insert(int i,Object x);
    26     //6.删除并返回线性表中的第i个元素
    27     public void remove(int i);
    28     //7.线性表中首次出现指定数据元素的位置序号
    29     public int indexOf(Object x);
    30     //8.输出线性表中的元素
    31     public void display();
    32     
    33 }

    2.以物理存储的顺序表方式实现Ilist接口并实现其中的所有方方法

     1 package com.neusoft.List;
     2 
     3 public class SequenceList implements IList{
     4     public Object[] listElem;
     5     public int currentLen;//线性表长度
     6     public  SequenceList(int maxSize) {
     7         currentLen =0;//线性表长度置空
     8         listElem = new Object[maxSize];
     9         //为顺序表分配存储空间
    10     }
    11     @Override
    12     public void clear() {
    13         currentLen=0;//置顺序表的当前长度为0
    14     }
    15 
    16     @Override
    17     public boolean isEmpty() {
    18         return currentLen==0;
    19     }
    20 
    21     @Override
    22     public int length() {
    23         return currentLen;
    24     }
    25     //4.得到第i个元素的值
    26     @Override
    27     public Object get(int i) {
    28         if (i<0 || i>currentLen-1) {
    29             System.out.println("第"+i+"个元素不存在");
    30         }
    31         return listElem[i];
    32     }
    33     @Override
    34     public void insert(int i, Object x) {//i指的是在第几个位置插入
    35         if (i<0 || i>currentLen) {
    36             System.out.println("第"+i+"个元素不存在");
    37         }
    38         if (currentLen==listElem.length) {
    39             System.out.println("顺序表容量已满");
    40         }
    41         for (int j = currentLen; j >i; j--) {
    42             listElem[j]=listElem[j-1];
    43         }
    44         listElem[i]=x;
    45         currentLen++;
    46     }
    47 
    48     @Override
    49     public void remove(int i) {
    50         // 将顺序表上的第i个元素a从顺序表中删除
    51         if (i<0 ||i>=currentLen-1) {
    52             System.out.println("删除位置不合法");
    53         }
    54         for (int j = i; j < currentLen-1; j++) {
    55             listElem[j]=listElem[j+1];
    56         }
    57         currentLen--;
    58     }
    59 
    60     @Override
    61     public int indexOf(Object x) {
    62         //查找满足条件的数据元素首次出现的位置
    63         //显示顺序表中待比较的数据元素,其起始值指示顺序表中第0个元素
    64         int j =0;
    65         while (j<currentLen&&!listElem[j].equals(x)) {
    66             j++;
    67         }
    68         if (j<currentLen) {
    69             return j;//返回值为x的数据元素在线性表中的位置
    70         }else {
    71             return -1;//顺序表中不存在该元素。
    72         }
    73     }
    74 
    75     @Override
    76     public void display() {
    77         for (int i = 0; i < currentLen; i++) {
    78             System.out.println(listElem[i]+" ");
    79         }
    80         System.out.println();
    81     }
    82 }
    SequenceList顺序表实现类

    3.测试顺序表的方法

     1 package com.neusoft.List;
     2 
     3 public class SequenceListTest {
     4     public static void main(String[] args) {
     5         SequenceList seq=new SequenceList(10);
     6         seq.insert(0,'a');
     7         seq.insert(1,'b');
     8         seq.insert(2,'c');
     9         seq.insert(3,'d');
    10         seq.insert(4,'e');
    11         int index = seq.indexOf('e');
    12         if (index != -1) {
    13             System.out.println("第一次出现的位置为"+index);
    14         }else {
    15             System.out.println("不存在");
    16         }
    17     }
    18 }
    SequenceListTest 测试类

    4.以顺序表的方式解决实际问题

    题目:实现查找线性表中第i个数据元素的直接前驱和后继,并输出
    package com.neusoft.List;
    import java.util.Scanner;
    /**
     * @author SimonsZhao
     *实现查找线性表中第i个数据元素的直接前驱和后继,并输出
     */
    public class SequenceListTest2 {
        public static void main(String[] args) {
            int n=10;
            SequenceList seq= new SequenceList(50);
            for (int i = 0; i < n; i++) {
                seq.insert(i, i);
            }
            System.out.println("请输入i的值:");
            Scanner scanner = new Scanner(System.in);
            int input = scanner.nextInt();
            if (input>0 && input<=n) {
            System.out.println("第"+input+"个元素的直接前驱是:"+seq.get(input-1));
            }else {
                System.out.println("第"+input+"个元素的直接前驱不存在");
            }
            
            if (input>=0 && input<n) {
                System.out.println("第"+input+"个元素的直接后继是:"+seq.get(input+1));
                }else {
                    System.out.println("第"+input+"个元素的直接后继不存在");
                }
        }
    }

    5.上题结果分析:

  • 相关阅读:
    二叉树——Java实现
    Java实现单链表的增删查改及逆置打印
    常见排序——Java实现
    [导入]Interesting Finds: 2007.12.10
    [导入]Interesting Finds: 2007.12.09
    [导入]Interesting Finds: 2007.12.12
    [导入]Interesting Finds: 2007.12.06
    [导入]Interesting Finds: 2007.12.07
    [导入]Interesting Finds: 2007.12.04
    [导入]Interesting Finds: 2007.12.05
  • 原文地址:https://www.cnblogs.com/jackchen-Net/p/6524666.html
Copyright © 2011-2022 走看看