----------顺序表的方法接口定义----------

package com.cn.hbut.dao;

/**
 * @author wickedvalley
 * description:
 * 线性表的接口定义
 */
public interface DefineList {
public void clear(); //初始化
public Object gete(int i); //返回第i个元素
public int length(); //求长度
public int loc(Object e); //查找,若找到,返回元素的位置,否则返回0
public boolean inset(int loc,Object e); //将e插入loc位置
public Object dele(int loc); //删除loc位置的元素
public boolean full(); //判断线性表是否为满
public boolean empty(); //判断线性表是否为空

}

----------顺序表的具体实现----------

package com.cn.hbut.daoImpl;

import com.cn.hbut.dao.DefineList;

public class SqList implements DefineList{
final int deflen=10; //自定义长度
Object [] elem; //存储元素的数组
int curlen; //当前的元素个数
int maxlen; //最大元素个数

//无参的构造函数用以初始化线性表
public SqList() {
curlen=0;
maxlen=deflen;
elem=new Object[maxlen];
}
//指定大小的构造函数用以初始化线性表
public SqList(int maxsz) {
curlen=0;
maxlen=maxsz;
elem=new Object[maxlen];
}

//指定线性表的具体的元素以及最大个数
public SqList(Object [] a,int maxsz) {
curlen=a.length;
maxlen=maxsz>curlen?maxsz:curlen;
elem=new Object[maxlen];
for(int i=0;i<curlen;i++)elem[i]=a[i];
}

//指定线性表的具体的元素以及最大个数
public SqList(SqList sql) {
curlen=sql.curlen;
maxlen=sql.maxlen;
elem=new Object[maxlen];
for(int i=0;i<curlen;i++)elem[i]=sql.elem[i];
}

//清空线性表
@Override
public void clear() {
curlen=0;
}
//获取某个位置的元素
@Override
public Object gete(int i) {
if(i>=1&&i<=curlen)
return elem[i-1];
else
return null;
}
//当前线性表的长度
@Override
public int length() {
return curlen;
}
//查找某个元素的位置
@Override
public int loc(Object e) {
int i=0;
while(i<curlen&&(!elem[i].equals(e)))i++;
if(i<curlen)
return i+1;
return 0;
}
//在某个位置插元素
@Override
public boolean inset(int loc, Object e) {
int i;
if(loc<1||loc>curlen+1||curlen==maxlen)return false;
else
{
curlen++;
for(i=curlen-1;i>=loc;i--)elem[i]=elem[i-1];
elem[loc-1]=e;
return true;
}
}
//删除某个位置的元素
@Override
public Object dele(int loc) {
int i;
if(loc<1||loc>curlen+1||curlen==maxlen)return null;
Object obj=elem[loc-1];
for(i=curlen-1;i>=loc;i--)elem[i-1]=elem[i];
return obj;
}
//判断线性表是否已满
@Override
public boolean full() {
return curlen==maxlen;
}
//判断线性表是否为空
@Override
public boolean empty() {
return curlen==0;

}

}

----------测试顺序表的一些方法----------

package com.cn.hbut.test;

import org.junit.Test;

import com.cn.hbut.daoImpl.SqList;

public class TestCase {

@Test
public void testSqlist(){
Integer [] a={1,7,3};
SqList sql = new SqList(a, 5); //初始化线性表
Object obj=sql.dele(2); //删除第2个位置的元素
System.out.println("您删除的元素是:"+obj);
System.out.println("线性表的长度:"+sql.length());
sql.inset(2, 5); //第2个位置插入2
Object obj2 = sql.gete(2); //获取第2个位置元素
System.out.println("获取第2个位置元素:"+obj2);
System.out.println("线性表是否为空:"+sql.empty()); //线性表是否为空

}

}

数据结构(一)---顺序表的实现---java版相关推荐

  1. python顺序表的实现_数据结构:队列 链表,顺序表和循环顺序表实现(python版)...

    链表实现队列: 尾部 添加数据,效率为0(1) 头部 元素的删除和查看,效率也为0(1) 顺序表实现队列: 头部 添加数据,效率为0(n) 尾部 元素的删除和查看,效率也为0(1) 循环顺序表实现队列 ...

  2. 【数据结构】顺序表的应用(4)(C语言)

    [数据结构]顺序表的应用(1)(C语言) [数据结构]顺序表的应用(2)(C语言) [数据结构]顺序表的应用(3)(C语言) 设计一个算法,将一个顺序表倒置,即如果顺序表各个节点值存储在一维数组a中, ...

  3. 【数据结构】顺序表的应用(3)(C语言)

    问题: 已知一个顺序表中的各节点值是从大到小有序的,设计一个算法,插入一个值为x的节点,使顺序表中的节点仍然是从小到大有序的. 头文件与该头文件一样:[数据结构]顺序表的实现(C语言) #includ ...

  4. 【数据结构】顺序表的应用(2)(C语言)

    问题: 2.有顺序表A和B,其元素均按从小到大的升序排列,编写一个算法,将它们合并成一个顺序表C,要求C的元素也按从小到大的升序排列. 头文件与该头文件一样:[数据结构]顺序表的实现(C语言) #in ...

  5. 【数据结构】顺序表的应用(1)(C语言)

    问题: 1.将顺序表(a1,a2,-,an)重新排列以a1为界的两部分:a1前面的值均比a1小,a1后面的值均比a1大(这里假设数据元素的类型具有可比性,不妨设为整型). 头文件与该头文件一样:[数据 ...

  6. 数据结构 创建顺序表

    3.18数据结构--创建顺序表 运行结果截图: #define _CRT_SECURE_NO_WARNINGS #define MAXSIZE 100 #include<stdio.h> ...

  7. 数据结构之顺序表的删除、查找、遍历

    一.引言 本篇文章作为顺序表新的篇章延续上一篇文章(数据结构之顺序表构造.插入.扩容操作)的内容. 二.顺序表的删除.查找.遍历操作 注:代码实现均为C语言 1.顺序表的删除(erase)操作 当我们 ...

  8. 数据结构_顺序表SeqList(C++

    数据结构_SeqList顺序表(C++实现 文章目录 数据结构_SeqList顺序表(C++实现 前言&注意事项 顺序表实现方法 总结 结束 前言&注意事项 有些函数没有修改成员数据的 ...

  9. Tsai笔记:C++学习随性笔记(2)—— 数据结构:顺序表的基本操作

    Tsai笔记:C++学习随性笔记(2)-- 数据结构:顺序表的基本操作 Tsai三步.(第一步,功能说明.第二步,结果图显示.第三步,代码展示) 第一步,功能说明. 1.线性表的顺序存储 线性表的顺序 ...

最新文章

  1. Spring boot控制台运行
  2. ToString()、Convert.ToString()、(string)、as string 的区别
  3. 【Linux系统编程】线程基本操作
  4. springboot连接SQL数据库配置application
  5. SAP ABAP XSLT extract custom style
  6. 六款值得推荐的Android开源框架简介
  7. VBA学习_5:流程控制
  8. 随便聊聊,Linux 中的环境变量
  9. 人工智能加速期:算法为王还是场景落地优先 ?
  10. 简述开发Android2D图形,2D图形开发(一)(高级).pdf
  11. 网页动物园2.0发布,经过几个月的努力,采用JAVA编写!
  12. paip.python错误解决13
  13. javaWeb毕业设计项目完整源码附带论文合集免费下载
  14. matlab中.m文件访问simulink
  15. matlab数组的创建
  16. msdia80.dll 是干什么的?这个文件可以删除吗?
  17. opencvsharp图像处理_腐蚀与膨胀,击中击不中变换(3)
  18. Pytorch的rand、randn和normal的用法及区别
  19. python第一次作业
  20. 路由器在接一个路由器设置方法

热门文章

  1. C++ deque 底层原理及 queue、stack 容器的使用详解
  2. Python网络爬虫从入门到实践 -- chapter 1 -- 网络爬虫入门
  3. L1-005 考试座位号 (15分) C语言实现(18行代码AC!)
  4. Pytest入门【1】
  5. 安装部署OpenStack(添加资源)
  6. mysql文档批处理去重_数据导入经验总结
  7. python定义函数的命令_Python入门 | 定义函数
  8. 电脑不能打字_电脑拼音打字快速入门秘籍
  9. python爬虫之美女图片爬取
  10. java webapps路径_java 获取服务器端的webapps路径 | 学步园