Java算法结构---------线性表

来源:互联网 发布:阿里云api怎么使用 编辑:程序博客网 时间:2024/05/21 22:37

线性表相关介绍:

              线性表是一种最常用,最简单的线性结构。线性表的主要操作特定是,可以在任意位置上插入一个数据元素和删除一个数据元素。线性表可以用顺序存储结构和链式存储结构实现。用顺序存储结构实现的线性表称为顺序表,用链式存储结构实现的线性表称为链表。链表主要有单链表、循环单链表和循环双链表三种。

 

线性表的定义

 如果一个数据元素序列满足:

1、除第一个和最后一个数据元素外,每个数据元素只有一个前驱数据元素和一个后继数据元素。

2、第一个数据元素没有前驱数据元素。

3、最后一个数据元素没有后继元素。

则称这样的数据结构为线性结构。

 

线性表是一种可以在任意位置进行插入和删除数据元素操作的、由n(n>=0)个相同类型的数据元素a1,a2,a3,a4组成的线性结构。

 

线性表的抽象数据类型

1、数据集合:线性表的数据元素集合可以表示为序列a1,a2,a3,a4,每个数据元素的数据类型可以是任意的类类型。

2、操作集合:1、求当前数据元素的个数。

                           2、插入指定位置数据元素

                          3、删除指定位置数据元素

                          4、取出指定位置的数据元素

                           5、判断线性表是否为空

 

实例代码:

               顺序存储结构-----线性表接口代码:

package com.algorithm;//创建顺序存储---线性表(接口)public interface Linear {     //统计线性表大小public int size();//判断线性表是否为空public boolean isEmpty();//线性表--取数据public Object getData(int position);//线性表---删数据public boolean delete(int position);//线性表---存数据public boolean insert(int position,Object object);}


          顺序存储结构----线性表实例类代码:

package com.algorithm;public class LinearExample implements Linear {//相关属性和相关的构造函数//默认线性表大小--20final int defaultSize=20;//线性表默认存储的最大值int maxSize;//线性表大小int size;//线性表的数组存储对象Object[] listarray;//相关构造方法public LinearExample() {initiate(defaultSize);}public LinearExample(int sz){initiate(sz);}//线性表初始化方法public void initiate(int length){maxSize=length;size=0;listarray=new Object[length];}@Overridepublic boolean delete(int position) {// TODO Auto-generated method stubboolean target=false;//判断是否position是否为合法值if(position<0||position>size-1){return target;}else if(size==0){return target;}else{  Object object=listarray[position];  //线性表---数据前移  for(int i=position;i<size-1;i++){  listarray[i]=listarray[i+1];    }  target=true;  size--;  return target;}}@Overridepublic Object getData(int position) {// TODO Auto-generated method stubObject object=null;if(position<0||position>listarray.length-1){//返回错误信代码object="404";}else{//判读存储的数据是否为空object=listarray[position];}return object;}@Overridepublic boolean insert(int position, Object object) {// TODO Auto-generated method stubboolean target=false;if(size==maxSize){return target;}else if(position<0||position>size){return target;}else{target=true;//线性表---数据后退for(int i=size;i>position;i--){listarray[i]=listarray[i-1];}//线性表--数据存储listarray[position]=object;//大小添加size++;return target;}}@Overridepublic boolean isEmpty() {// TODO Auto-generated method stubboolean target=false;if(listarray.length>0){target=true;return target;}return target;}@Overridepublic int size() {// TODO Auto-generated method stubreturn listarray.length;}}


代码实例调用:

public class ArrayTest {public static void main(String[] args){//顺序存储--线性表LinearExample exaple=new LinearExample(10);//线性表数据插入exaple.insert(0, "1");exaple.insert(1, "2");exaple.insert(2, "3");exaple.insert(3, "4");exaple.insert(4, "5");exaple.insert(5, "6");exaple.insert(6, "7");exaple.insert(7, "8");exaple.insert(8, "9");exaple.insert(9, "10");//输出线性表存储for(int i=0;i<exaple.size();i++){System.out.println("i 的值为:"+exaple.getData(i));}//线性表大小int size=exaple.size();System.out.println("线性表的大小为:"+size);//删除指定位置的数据boolean delete=exaple.delete(1);System.out.println("线性表删除是否成功:"+delete);//输出删除后线性表存储for(int i=0;i<exaple.size()-1;i++){System.out.println("i 的值为:"+exaple.getData(i));}//插入指定位置的值exaple.insert(2, "hello,world");//输出插入后线性表存储for(int i=0;i<exaple.size();i++){System.out.println("i 的值为:"+exaple.getData(i));}}}


相关结果展示:

 

原创粉丝点击