我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java 3:顺序表的操作

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java  3:顺序表的操作

顺序表常见操作有插入、删除、查找、修改。
一、插入:
1.插入有头插、尾插、任意位置插入。在插入时要注意下标的取值在顺序表长度范围内。所以最好在插入之前进行扩容操作。
2.在头插时要注意先将原数组的元素从后往前依次向后移动。因为如果从前往后开始移动的话,会造成后一个元素被前一个元素覆盖,而丢失数据且造成重复。arr[i+1]=arr[i],注意此处i的意思是要移动的元素的下标。
3.任意位置插入与头插类似,从后往前(要插入的位置元素下标)依次向后移动,再将数据插入
二.删除
1.删除有头删、尾删、任意位置删除,要注意删除前,原顺序表是否为空的异常情况。
2.头删与头插相反,是从前往后依次向前移动,即后一个元素arr[i+1]覆盖前一个元素arr[i].arr[i]=arr[i+1]
3.不论查找还是删除,在确定循环语句的初始值和条件时都要仔细思考可取范围
三.查找和修改
查找和修改要注意目标位置的下标不能越界
四.扩容
在java语言中,扩容一般扩为原来的1.5倍,是一种习惯的规范,不是死规则。
最后,附上完整代码,包括初始化、插入、删除、查找、修改、扩容、删除顺序表的相同元素。

import java.util.Arrays;
public class SeqList1{
    private int[] array;
    private int size;
    //1.初始化,构造函数
    public  SeqList1(){
        array=new int[11];
        size=0;
    }
    //2.头插
    public void pushFront(int element){
        ensureCapacity();
        for(int i=size-1;i>=0;i--){// i代表的数据元素的下标,从后往前移动
            array[i+1]=array[i];
        }
        array[0]=element;
        size++;
    }
    //3.尾插
    public void pushBack(int element){
        ensureCapacity();
        array[size++]=element;
    }

    //4.中间插 
    public void insert(int index,int element){
        if(index<0||index>size){
            System.out.println("下标异常,不能插入");
        }
        ensureCapacity();
        for(int i=size;i>=index;i--){
            array[i+1]=array[i];
        }
        array[index]=element;
        size++;
    }

    //5.头删
    public void popFront(){
        if(size==0){
        System.out.println("空表");
        }
        for(int i=0;i<size;i++){
            array[i]=array[i+1];
        }
        size--;
    }

    //6.尾删
    public void popBack(){
        if(size==0){
    System.out.println("空表");
        }
    size--;}
    //7.中间删
    public void erase(int index){
        if(index<0||index>=size){
            System.out.println("下标异常,不能删除");
        }
        for(int i=index;i<size;i++){
            array[i]=array[i+1];
        }
        size--;
    }

    //8.查找
    public int indexOf(int element){
        for(int i=0;i<size;i++){
            if(array[i]==element){
                return i;
            }
        }
            return -1;
    }
    //9.根据下标,获取元素
    public int get(int index){
    if(index<0||index>=size){
        System.out.println("下标异常");
    }
    for(int i=0;i<size;i++){
        if(array[i]==array[index]){
            return array[i];
        }
    }
            return -1;
}

    //10.给定下标,修改元素的值
    public void set(int index,int element){
        for(int i=0;i<size;i++){
            if(i==index){
                array[i]=element;
            }
        }
    }
    //11.显示当前表中元素长度
    public int size(){
        return size;
    }
    //12.判断表是否为空
    public boolean isEmpty(){
        return size==0;
    }
    //13.查询表的容量
    public int capacity(){
        return array.length;
    }
    //14.打印显示表中已有元素
    public String toString(){
        return Arrays.toString(
        Arrays.copyOf(array,size));
    }
    //15.删除表中的一个元素
    public void remove(int element){
        int index=indexOf(element);
        if(index!=-1){
            erase(index);
        }
    }
    //16.删除表中相同元素
    public void removeAll(int element){
        int j=0;
        for(int i=0;i<size;i++){
            if(array[i]!=element){
                array[j++]=array[i];
            }
        }
        size=j;
    }
    //17.扩容
    private void ensureCapacity(){
        if(size<array.length){
            return ;
        }
        //申请空间
        int newCapacity=array.length+array.length/2;
        int[] newArray=new int[newCapacity];
       //搬家
       for(int i=0;i<array.length;i++){
           newArray[i]=array[i];
       }
       //官宣
       this.array=newArray;
}
    public static void test1(String [] args){
        SeqList1 sq = new SeqList1();
        //[]
        System.out.println(sq.toString());
        //头插1 2 3
        sq.pushFront(1);
        sq.pushFront(2);
        sq.pushFront(3);
        System.out.println(sq.toString());
        //尾插10,20,30
        sq.pushBack(10);
        sq.pushBack(20);
        sq.pushBack(30);
        System.out.println(sq.toString());
        //1,2,3,10,20,30
        sq.insert(2,15);
        sq.insert(4,28);
        System.out.println(sq.toString());
        //当前容量
        System.out.println(sq.capacity());
        //尾插

        sq.pushBack(10);
        sq.pushBack(2000);
        sq.pushBack(3000);
        // sq.pushBack(4000);
        sq.pushBack(5000);
        sq.pushBack(6000);
        System.out.println("当前容量为"+ sq.capacity());
        //头删
        sq.popFront();
        //尾删
        sq.popBack();
        //中间删
        sq.erase(3);
        System.out.println(sq.toString());
    }
        public static void test2(String [] args){
            SeqList1 s =new SeqList1();
        s.pushBack(1);
        s.pushBack(2);
        s.pushBack(3);
        s.pushBack(4);
        s.pushBack(1);
        s.pushBack(2);
        s.pushBack(3);
        s.pushBack(4);
        // [ 1, 2, 3, 4, 1, 2, 3, 4 ]
        System.out.println(s.toString());
        s.remove(4);
        // [ 1, 2, 3,  1, 2, 3, 4 ]
        System.out.println(s.toString());
        s.removeAll(4);
        // [ 1, 2, 3,  1, 2, 3,  ]
        System.out.println(s.toString());
        }
        public static void main(String[] args){
            test1(args);
            test2(args);
        }
    }

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java 3:顺序表的操作

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java 3:顺序表的操作

顺序表常见操作有插入、删除、查找、修改。一、插入:1.插入有头插、尾插、任意位置插入。在插入时要注意下标的取值在顺序表长度范围内。所以最好在插入之前进行扩容操作。2.在头插时要注意先将原数组的元素从后往前依次向后移动。因为如果从前往后开始移
2023-01-31

Java数据结构的顺序表怎么操作

这篇文章主要介绍了Java数据结构的顺序表怎么操作的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java数据结构的顺序表怎么操作文章都会有所收获,下面我们一起来看看吧。前言线性表(linear list)是n个
2023-06-29

如何使用Java实现顺序表的操作

小编给大家分享一下如何使用Java实现顺序表的操作,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下静态顺序表:使用定长数组存储。动态顺序表:使用动态开辟
2023-06-28

C++中顺序表操作的示例代码

这篇文章主要为大家详细介绍了C++中顺序表的基础操作的相关代码,主要有顺序表的输出、插入和删除数据等,感兴趣的小伙伴可以了解一下
2022-11-13

C语言怎么实现顺序表的操作

这篇文章主要介绍了C语言怎么实现顺序表的操作的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言怎么实现顺序表的操作文章都会有所收获,下面我们一起来看看吧。线性表线性表(linear list)是n个具有相同特
2023-06-30

VBS正则表达式操作符的优先权顺序

这篇文章主要讲解了“VBS正则表达式操作符的优先权顺序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VBS正则表达式操作符的优先权顺序”吧!优先权顺序在构造正则表达式之后,就可以象数学表达式
2023-06-09

python 3 列表操作

创建列表subject = ["Liunx","python","web","java"]#读取列表print(subject)#打印显示['Liunx', 'python', 'web', 'java']#列表的切片,切片的索引是从0开始
2023-01-31

Java顺序表的示例分析

这篇文章主要介绍Java顺序表的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一 、前言顺序表常用的一种,学习并了解显得十分重要,顺序表为以后的学习打下了基石。二、顺序的定义顺序表示在计算机内存中以数组的形式
2023-06-25

zookeeper-3. java操作z

对于Zookeeper的建立连接、增删改查、以及监视节点的变化操作。一、简单实例操作zookeeper原生API1. 创建会话方法:客户端可以通过创建一个zookeeper实例来连接zookeeper服务器。参数说明:connectStri
2023-01-31

C语言实现顺序表的基本操作的示例详解

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。本文将通过示例为大家讲解一下顺序表的基本操作,需要的可以参考一下
2022-11-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录