大话数据结构(五)(java程序)——顺序存储结构的插入与删除
获得元素操作
对于线性表的顺序存储结构来说,我们要实现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程序)——顺序存储结构的插入与删除的更多相关文章
- Java程序的结构和执行
目录 Java程序的结构 Java程序的执行 source code -- compiler -- class file -- JVM compiler JVM Java语法 数据类型 数据的存储 堆 ...
- 004 01 Android 零基础入门 01 Java基础语法 01 Java初识 04 Java程序的结构
004 01 Android 零基础入门 01 Java基础语法 01 Java初识 04 Java程序的结构 Java程序的结构 Java程序外层--类 程序外层,如下面的代码,是一个类的定义. c ...
- java基础 三 概念和java程序的结构.
一.java的一些概念: JRE(java runtime environment):java程序运行环境,如果要运行java程序,需要jre支持.jre里包含jvm JDK(java devel ...
- java资料——顺序存储结构和链式存储结构(转)
顺序存储结构 主要优点 节省存储空间,随机存取表中元素 缺 点 插入和删除操作需要移动元素 在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构. 顺序存储结 ...
- Java程序基本结构
/** * 可以用来自动创建文档的注释 */ public class Hello { public static void main(String[] args) { // 向屏幕输出文本: Sys ...
- c数据结构 -- 线性表之 顺序存储结构 于 链式存储结构 (单链表)
线性表 定义:线性表是具有相同特性的数据元素的一个有限序列 类型: 1:顺序存储结构 定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构 算法: #include <stdio. ...
- Java 集合与队列的插入、删除在并发下的性能比较
这两天在写一个java多线程的爬虫,以广度优先爬取网页,设置两个缓存: 一个保存已经访问过的URL:vistedUrls 一个保存没有访问过的URL:unVistedUrls 需要爬取的数据量不大,对 ...
- C 线性表的顺序存储实现及插入、删除等操作示例
一.线性表的定义 线性表(Linear List)是由同一类型元素构成的有序序列的线性结构.线性表中元素的个数称为线性表的长度:线性表内没有元素(长度为0)时,称为空表:表的起始位置称为表头,表的结束 ...
- 二叉搜索树Java实现(查找、插入、删除、遍历)
由于最近想要阅读下 JDK1.8 中 HashMap 的具体实现,但是由于 HashMap 的实现中用到了红黑树,所以我觉得有必要先复习下红黑树的相关知识,所以写下这篇随笔备忘,有不对的地方请指出- ...
随机推荐
- 记C语言浮点数运算处理 "坑" 一则
看一小段C语言程序: int main() { float x = 1.3; x = x - (int)x; ); ; } 在你心目中, 变量 I 是怎样的结果? 如果你理所当然地认为是3的话, 那么 ...
- C++学习网站总结(转)
总结帖: http://club.topsage.com/thread-361504-1-1.html Visual C++ (VC) / MFC 电子书下载: Visual C++ 2008 入门经 ...
- POJ 2185 Milking Grid KMP(矩阵循环节)
Milking Grid Time Limit: 3000MS Memory Lim ...
- 我与C++的不解情缘
我是一个老实人,我当时报考C++真的全心是为了自己自考的免考,绝不是为了什么二级证,可是,进行到一半的时候,突然获悉,C++自我们这次开始,不作为免考科目了,当时我的心里啊,那个纠结,那个痛啊,随后, ...
- HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID
HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID HealthKit开发准备工作 在开发一款HealthKit应用程序时,首先需要讲解HealthKit中有哪些类,在i ...
- 前端JSON使用总结
JSON: JavaScript Object Notation(JavaScript 对象表示法)的简称. 1. 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaS ...
- LCS(打印路径) POJ 2250 Compromise
题目传送门 题意:求单词的最长公共子序列,并要求打印路径 分析:LCS 将单词看成一个点,dp[i][j] = dp[i-1][j-1] + 1 (s1[i] == s2[j]), dp[i][j] ...
- Guaranteeing message processing —— 可靠的消息处理
Storm's reliability API: how Storm guarantees that every message coming off a spout will be fully pr ...
- Codeforces 55D (数位DP+离散化+数论)
题目链接: http://poj.org/problem?id=2117 题目大意:统计一个范围内数的个数,要求该数能被各位上的数整除.范围2^64. 解题思路: 一开始SB地开了10维数组记录情况. ...
- 发送JS错误日志到服务器
JS记录错误日志/捕捉错误 //onerror提供异常信息,文件路径和发生错误代码的行数的三个参数. window.onerror = function(e,url,index){ var msg = ...