表的顺序结构---重写Arraylist类
重写ArrayList类,为防止冲突,重写为MyArrayList,未继承Iterable类。
public class MyArrayList<AnyType>{ int N=10;
AnyType a[]; //定义一个数组,未分配空间
int theSize; public MyArrayList(){
clear();
} public void clear(){
theSize=0;
increaseSpace(N); //对数组初始化,扩容为10
}
public int size(){ //返回顺序表长度
return theSize;
}
public boolean isEmpty(){ //判断顺序表是否为空
if(size()==0)
return
true;
return
false;
}
public AnyType get(int index){ //获取下标为index的数据
if(index<0||index>=size()){ //判断所查找的数据是否存在,
return null;
}
return a[index];
}
public AnyType set(int index,AnyType x){ //用X替换表中某一数据,并返回被替换的值
if(index<0||index>=size()){
return null;
}
AnyType old=a[index];
a[index]=x;
return old;
}
public void increaseSpace(int newSpace){ //扩容
//if(newSpace<theSize)
//return;
AnyType b[]=a;
a=(AnyType[]) new Object[newSpace]; //????
for(int i=0;i<size();i++){
a[i]=b[i];
} }
public boolean add(AnyType x){ //添加元素
add(size(),x);
return true;
}
public void add(int index,AnyType x){ //在指定位置插入元素
if(a.length==size()) //判断是否需要扩容
increaseSpace(size()*2);
for(int i=size();i>index;i--){ //把index位置后的元素从右向左依次右移,并使theSize加一
a[i]=a[i-1];
}
a[index]=x;
theSize++;
}
public AnyType remove(int index){ //删除表中指定位置的元素
AnyType r=a[index];
for(int i=index;i<size()-1;i++){ //将index位置后的元素从左向右依次左移,并使theSize减一
a[i]=a[i+1];
}
theSize--;
return r;
}
public static void main(String[] args) {
MyArrayList<String> m=new MyArrayList<String>();
m.add(0,"aaa");
System.out.println(m.size()+" "+m.get(0));
m.add(1,"bbb");
System.out.println(m.size()+" "+m.get(1));
m.add(2,"ccc");
System.out.println(m.size()+" "+m.get(2));
m.add(3,"ddd");
System.out.println(m.size()+" "+m.get(3));
m.set(2,"eee");
System.out.println(m.size()+" "+m.get(2));
m.remove(1);
System.out.println(m.size()+" "+m.get(1));
m.set(8,"fff");
System.out.println(m.size()+" "+m.get(4));
System.out.println(m.isEmpty()); } }
表的顺序结构---重写Arraylist类的更多相关文章
- 已知长度为n的线性表采用顺序结构,写一算法删除该线性表中所有值为item的元素
/** * @author:(LiberHome) * @date:Created in 2019/2/27 23:34 * @description: * @version:$ */ /*已知长度为 ...
- 2019-02-03 线性表的顺序储存结构C语言实现
#include<cstdio> #define MAXSIZE 20 typedef int Elemtype; //Elemtype类型根据实际情况而定,这里取int typedef ...
- 线性表中顺序表的的理解和实现(java)
线性表的顺序表示指的是用一组地址连续的存储单元以此存储线性表的数据元素,这种表示也称作线性表的顺序存储结构或顺序映像.通常,称这种存储结构的线性表为顺序表.特点是:逻辑上相邻的数据元素,其物理次序上也 ...
- c语言进阶12-线性表之顺序表
一. 线性表的定义 为什么要学习线性表呢? 因为我们日常生活中存在种数据关系,计算机程序是为了解决日常生活的数据关系,因此我们要学习线性表. 线性表是什么呢? 线性表是由n个元素组成的有限序列. 需 ...
- 线性表的顺序存储结构之顺序表类的实现_Java
在上一篇博文——线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构——顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放 ...
- 2.2_线性表的顺序存储结构_参考集合ArrayList
[线性表的顺序存储从结构] 指的是用一段连续的存储单元一次储存线性表的数据元素. [线性表的顺序存储的结构代码 C语言版] #define MAXSIZE 20 /*存储空间初始分配量*/ typed ...
- 数据结构4:顺序表(线性表的顺序存储结构)及C语言实现
逻辑结构上呈线性分布的数据元素在实际的物理存储结构中也同样相互之间紧挨着,这种存储结构称为线性表的顺序存储结构. 也就是说,逻辑上具有线性关系的数据按照前后的次序全部存储在一整块连续的内存空间中,之间 ...
- Java数据结构-线性表之顺序表ArrayList
线性表的顺序存储结构.也称为顺序表.指用一段连续的存储单元依次存储线性表中的数据元素. 依据顺序表的特性,我们用数组来实现顺序表,以下是我通过数组实现的Java版本号的顺序表. package com ...
- C语言实现顺序表(顺序存储结构)
顺序表(顺序存储结构)及初始化过程详解 顺序表,全名顺序存储结构,是线性表的一种.通过<线性表>一节的学习我们知道,线性表用于存储逻辑关系为"一对一"的数据,顺序表自然 ...
随机推荐
- UVAlive 2519 Radar Installation (区间选点问题)
Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. ...
- Android NDK入门实例 计算斐波那契数列二生成.so库文件
上一篇文章输生成了jni头文件,里面包含了本地C代码的信息,提供我们引用的C头文件.下面实现本地代码,再用ndk-build编译生成.so库文件.由于编译时要用到make和gcc,这里很多人是通过安装 ...
- Android动绘图标——I am not a gif maker,I am a developer
最早在git上发现一个非常酷眩的动绘图标效果: https://github.com/xuyisheng/tickplusdrawable 不得不说,国外的程序猿在细节的考虑上,确实比我们要好非常多, ...
- 重温委托(delegate)和事件(event)
1.delegate是什么 某种意义上来讲,你可以把delegate理解成C语言中的函数指针,它允许你传递一个类A的方法m给另一个类B的对象,使得类B的对象能够调用这个方法m,说白了就是可以把方法当作 ...
- WPF案例 (四) 模拟Windows7桌面任务栏
原文:WPF案例 (四) 模拟Windows7桌面任务栏 这个程序模彷了Windows7的桌面任务栏,当在桌面上双击某个快捷方式时,将打开一个新的子界面,并且在任务栏里创建一个链接到此界面的任务栏图标 ...
- javamail发送邮件的简单实例(转)
javamail发送邮件的简单实例 今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码 ...
- 2012Android开发热门资料(110个)
下载中心完整附件下载地址:http://down.51cto.com/data/412494 附件内容部分预览: 专题推荐: Android控:平板电脑HD精品游戏软件合集(共32个) http:// ...
- Learning Cocos2d-x for WP8(9)——Sprite到哪,我做主
原文:Learning Cocos2d-x for WP8(9)--Sprite到哪,我做主 工程文件TouchesTest.h和TouchesTest.cpp 相关素材文件 事件驱动同样适用于coc ...
- eclipse 安装vrapper vim插件
http://vrapper.sourceforge.net/update-site/stable 如果安装不上,设置下代理./window/pereference/network* - manul
- Linux C语言写的超级简单port扫描器
这个本来曾经也写过的,今天无聊复习下 再写一遍.简单的一塌糊涂,写的不咋地大家见谅哦!有空再加强 嘿嘿! #include <stdio.h> #include <stdlib.h& ...