获得元素操作

对于线性表的顺序存储结构来说,我们要实现getElement操作,即将线性表的第i个位置元素返回即可

插入操作

插入算法思路:

1、如果插入位置不合理,抛出异常

2、如果插入表的长度大于等于数组长度,则抛出异常或动态增容

3、从最后一位元素开始向前遍历到第i个位置,分别把它们都向后移动一个位置

4、将要插入元素填入位置i处

5、表长度加1

删除操作

1、如果删除位置不合理,抛出异常

2、取出插入元素

3、从删除元素位置开始遍历到最后一个元素位置,分别将它们都向前移动一位

4、表长度减一

public interface List {
public Object getElement(int index) throws Exception;
public void doInsert(Object obj,int index) throws Exception;
public void doDelete(int index) throws Exception;
}
public class SequenceList implements List{
static final int DEFUALTLENTH=10;
int maxSize;//最大数组长度
int size;//当前长度
Object[] list;//对象数组 //顺序表初始化方法
public void init(int size1){
maxSize = size1;//这个表的长度为size1
list = new Object[size1];
}
//无参构造方法
public SequenceList() {
init(DEFUALTLENTH);
}
//有参构造方法
public SequenceList(int size2){
init(size2);
} @Override
public Object getElement(int index) throws Exception {
if(size==0 || index<0 || index>=size){
System.out.println("参数不正确");
}
if(size == maxSize){
System.out.println("");
}
return list[index];
} @Override
public void doInsert(Object obj,int index) throws Exception {
if(index<0 || index>size+1){
System.out.println("参数错误");
}
if(size == maxSize){
System.out.println("线性表已满,无法插入");
}
for(int i=size-1;i>index-1;i--){
list[i+1]=list[i];//指定位置之后的元素都后移一位
}
list[index] = obj;
size++;
} @Override
public void doDelete(int index) throws Exception {
if(index<0||index>=size){
System.out.println("参数错误");
}
if(index<size){
for(int i=size-1;i>index;i--){
list[i-1] = list[i];
}
}
size--; } }
public class ListTest {
public static void main(String args[]){
SequenceList seq = new SequenceList(20);
try {
seq.doInsert("aa", 1);
seq.doInsert("bb", 2);
seq.doInsert("cc", 3);
for(int j=0;j<seq.size;j++){
System.out.println(seq.getElement(j));}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
public class StudentList {
public static void main(String args[]){
SequenceList seqList = new SequenceList(30);
try {
seqList.doInsert(new Student(1,"小米","女",23), seqList.size);//每次插入,都在表的最后一位插入
seqList.doInsert(new Student(2, "小徐", "男", 22), seqList.size);
for(int i=0;i<seqList.size;i++){
System.out.println("第"+(i+1)+"学生信息为:"+seqList.getElement(i).toString());
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class Student{
private int id;
private String name;
private String gender;
private int age; public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "student [id=" + id + ", name=" + name + ", gender=" + gender
+ ", age=" + age + "]";
}
public Student(int sid,String name,String gender,int age){
this.id = sid;
this.name = name;
this.gender = gender;
this.age = age;
} }

  

大话数据结构(五)(java程序)——顺序存储结构的插入与删除的更多相关文章

  1. Java程序的结构和执行

    目录 Java程序的结构 Java程序的执行 source code -- compiler -- class file -- JVM compiler JVM Java语法 数据类型 数据的存储 堆 ...

  2. 004 01 Android 零基础入门 01 Java基础语法 01 Java初识 04 Java程序的结构

    004 01 Android 零基础入门 01 Java基础语法 01 Java初识 04 Java程序的结构 Java程序的结构 Java程序外层--类 程序外层,如下面的代码,是一个类的定义. c ...

  3. java基础 三 概念和java程序的结构.

    一.java的一些概念: JRE(java  runtime environment):java程序运行环境,如果要运行java程序,需要jre支持.jre里包含jvm JDK(java  devel ...

  4. java资料——顺序存储结构和链式存储结构(转)

    顺序存储结构 主要优点 节省存储空间,随机存取表中元素 缺    点 插入和删除操作需要移动元素 在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构. 顺序存储结 ...

  5. Java程序基本结构

    /** * 可以用来自动创建文档的注释 */ public class Hello { public static void main(String[] args) { // 向屏幕输出文本: Sys ...

  6. c数据结构 -- 线性表之 顺序存储结构 于 链式存储结构 (单链表)

    线性表 定义:线性表是具有相同特性的数据元素的一个有限序列 类型: 1:顺序存储结构 定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构 算法: #include <stdio. ...

  7. Java 集合与队列的插入、删除在并发下的性能比较

    这两天在写一个java多线程的爬虫,以广度优先爬取网页,设置两个缓存: 一个保存已经访问过的URL:vistedUrls 一个保存没有访问过的URL:unVistedUrls 需要爬取的数据量不大,对 ...

  8. C 线性表的顺序存储实现及插入、删除等操作示例

    一.线性表的定义 线性表(Linear List)是由同一类型元素构成的有序序列的线性结构.线性表中元素的个数称为线性表的长度:线性表内没有元素(长度为0)时,称为空表:表的起始位置称为表头,表的结束 ...

  9. 二叉搜索树Java实现(查找、插入、删除、遍历)

    由于最近想要阅读下 JDK1.8 中 HashMap 的具体实现,但是由于 HashMap 的实现中用到了红黑树,所以我觉得有必要先复习下红黑树的相关知识,所以写下这篇随笔备忘,有不对的地方请指出- ...

随机推荐

  1. Java Hour 53 HQL

    上回写到一个一个最基本的HQL 查询语句写出来都没有什么自信,这一课时就补上HQL 相关的知识. 这种东西笔者最喜欢的官方的原版说明文档了. http://docs.jboss.org/hiberna ...

  2. git提交报异常,fatal: The remote end hung up unexpectedly

    转自:http://liucanwen.iteye.com/blog/2021601 早上提交代码到 oschina代码库时,报了这个错误: fatal: The remote end hung up ...

  3. MATLAB信号与系统分析(二)——离散时间信号与系统的时域分析

    一.离散信号的表示 1.一个离散信号需要用两个向量来表示: (1)离散信号的幅值 (2)离散信号的位置信息 2.用MATLAB实现离散信号的可视化 (1)不能利用符号运算来表示 (2)绘制离散信号一般 ...

  4. ViewPager左右滑动

    布局: <android.support.v4.view.ViewPager android:id="@+id/viewpager_main" android:layout_ ...

  5. 无法获得锁 /var/lib/dpkg/lock - open (11: 资源临时不可用)

    转自:http://www.cnblogs.com/ManMonth/archive/2010/01/14/1648010.html 问题: 运行程序更新时出现报错: 无法获得锁 /var/lib/d ...

  6. Android 利用Gson生成或解析json

    目前手机端和服务端数据交流格式一般是json,而谷歌提供了Gson来解析json.下载Gson:https://code.google.com/p/google-gson/ 下载的放在lib并导入,若 ...

  7. 贪心 POJ 2586 Y2K Accounting Bug

    题目地址:http://poj.org/problem?id=2586 /* 题意:某公司要统计全年盈利状况,对于每一个月来说,如果盈利则盈利S,如果亏空则亏空D. 公司每五个月进行一次统计,全年共统 ...

  8. Chart系列(二):数据绑定

    1.绑定到OleDbDataReader: // Define the database query string mySelectQuery="SELECT Name, Sales FRO ...

  9. SPOJ287 Smart Network Administrator(最大流)

    题目大概是说,一个村庄有n间房子,房子间有m条双向路相连.1号房子有网络,有k间房子要通过与1号房子相连联网,且一条路上不能有同样颜色的线缆,问最少要用几种颜色的线缆. 二分枚举颜色个数,建立容量网络 ...

  10. PO3281 Dining(最大流)

    如果只有食物或者饮料那就是个二分图最大匹配. 三个真想不出来..然后看题解..从源点到食物到牛到饮料到汇点,这样建图. 所以思维不能太局限了,不懂得把食物和饮料放到牛两边,以为牛吃食物饮料.食物饮料被 ...