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));}}}
相关结果展示:
- Java算法结构---------线性表
- java算法--线性表
- 查找算法(针对线性表结构)
- 数据结构与算法3:线性结构与线性表-链表
- 线性表 线性结构
- [Java算法分析与设计]线性结构与顺序表(List)的实现应用
- 数据结构与算法(Java描述)-3、线性结构与顺序表
- Java数据结构与算法之数据结构-逻辑结构-线性结构(9)------Java线性结构概念及其基本操作
- java实现的链式线性表结构
- 线性表--顺序储存结构 java实现
- java数据结构--线性结构
- 线性表线性存储结构
- 线性结构--->线性表实现
- 线性结构—线性表
- 1. 线性结构--线性表
- 结构算法 001 线性表的顺序存储--顺序表
- 数据结构与算法——线性表顺序存储结构
- 数据结构与算法(线性表_链式存储结构)
- Linux下两个工具convmv和iconv
- call(),apply(),callee,caller,cookie方法,setInterval(),clearInterval(),setTimeout() ,clearTimeout()
- 转载_Jlink 命令行 下载bin文件
- Math
- Linux下ext4和ext3的比较
- Java算法结构---------线性表
- JavaScript 基础(2)
- WinMep视频加密 v1.0.2
- JavaSE JDK 环境变量配置 详细讲解
- FileWriter和FileReader
- linux网络设备驱动的结构
- VS2010 VC Project的default Include设置
- mysqldump:unknown option '--no-beep'错误解决办法
- 详细配置CKEditor 和 CKFinder 插件上传图片