返回顶部
首页 > 资讯 > 后端开发 > Python >Java 3:顺序表的操作
  • 352
分享到

Java 3:顺序表的操作

顺序操作Java 2023-01-31 01:01:12 352人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

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

顺序表常见操作有插入、删除、查找、修改。
一、插入:
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);
        }
    }

--结束END--

本文标题: Java 3:顺序表的操作

本文链接: https://lsjlt.com/news/184639.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java 3:顺序表的操作
    顺序表常见操作有插入、删除、查找、修改。一、插入:1.插入有头插、尾插、任意位置插入。在插入时要注意下标的取值在顺序表长度范围内。所以最好在插入之前进行扩容操作。2.在头插时要注意先将原数组的元素从后往前依次向后移动。因为如果从前往后开始移...
    99+
    2023-01-31
    顺序 操作 Java
  • Java实现顺序表的操作
    本文实例为大家分享了Java实现顺序表的基本操作,供大家参考,具体内容如下 静态顺序表:使用定长数组存储。动态顺序表:使用动态开辟的数组存储。 接口 package com.gith...
    99+
    2024-04-02
  • Java实现顺序表的操作详解
    目录一、顺序表是什么二、自定义异常空引用异常下标越界异常三、顺序表的方法顺序表的实现获取顺序表长度顺序表是否为空顺序表是否为满打印顺序表末尾新增元素指定位置新增元素判断是否包含某元素...
    99+
    2024-04-02
  • Java数据结构的顺序表怎么操作
    这篇文章主要介绍了Java数据结构的顺序表怎么操作的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java数据结构的顺序表怎么操作文章都会有所收获,下面我们一起来看看吧。前言线性表(linear list)是n个...
    99+
    2023-06-29
  • 如何使用Java实现顺序表的操作
    小编给大家分享一下如何使用Java实现顺序表的操作,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下静态顺序表:使用定长数组存储。动态顺序表:使用动态开辟...
    99+
    2023-06-28
  • C++顺序表的基本操作实现
    目录1.顺序表的定义2.顺序表上基本操作的实现完整代码如下:总结1.顺序表的定义 线性表的顺序存储又称顺序表。它是用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相...
    99+
    2024-04-02
  • C++中顺序表操作的示例代码
    编写程序,实现顺序表的下列功能: 从键盘输入数据建立一个顺序表输出该顺序表往顺序表中插入数据从顺序表中删除数据给定数据,进行查找,给出查找成功和失败信息 C++代码: #includ...
    99+
    2022-11-13
    C++顺序表操作 C++ 顺序表
  • Java 精炼解读数据结构的顺序表如何操作
    目录前言一、什么是顺序表顺序表的概念及结构创建顺序表打印顺序表获取顺序表长度在pos位置新增元素判定是否包含某个元素查找某个元素对应的位置获取 pos 位置的元素给 pos 位置的元...
    99+
    2024-04-02
  • C语言怎么实现顺序表的操作
    这篇文章主要介绍了C语言怎么实现顺序表的操作的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言怎么实现顺序表的操作文章都会有所收获,下面我们一起来看看吧。线性表线性表(linear list)是n个具有相同特...
    99+
    2023-06-30
  • C语言实现顺序表的全操作详解
    目录线性表顺序表顺序表接口实现1.顺序表初始化2.顺序表空间增容3.顺序表打印4.尾插数据5.尾删数据6.头插数据7.头删数据8.在pos下标处插入数据9.删除pos下标处数据10....
    99+
    2024-04-02
  • python 3 列表操作
        创建列表subject = ["Liunx","python","web","java"]#读取列表 print(subject) #打印显示 ['Liunx', 'python', 'web', 'java'] #列表的切片...
    99+
    2023-01-31
    操作 列表 python
  • VBS正则表达式操作符的优先权顺序
    这篇文章主要讲解了“VBS正则表达式操作符的优先权顺序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VBS正则表达式操作符的优先权顺序”吧!优先权顺序在构造正则表达式之后,就可以象数学表达式...
    99+
    2023-06-09
  • C语言全面讲解顺序表使用操作
    目录一、顺序表的结构定义二、顺序表的结构操作1.初始化2.插入操作3.删除操作4.扩容操作5.释放操作6.输出三、示例编程环境为 ubuntu 18.04。 顺序表需要连续一片存储空...
    99+
    2024-04-02
  • Java顺序表的示例分析
    这篇文章主要介绍Java顺序表的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一 、前言顺序表常用的一种,学习并了解显得十分重要,顺序表为以后的学习打下了基石。二、顺序的定义顺序表示在计算机内存中以数组的形式...
    99+
    2023-06-25
  • zookeeper-3. java操作z
    对于Zookeeper的建立连接、增删改查、以及监视节点的变化操作。一、简单实例操作zookeeper原生API1. 创建会话方法:客户端可以通过创建一个zookeeper实例来连接zookeeper服务器。参数说明:connectStri...
    99+
    2023-01-31
    操作 zookeeper java
  • Java中保证线程顺序执行的操作代码
    只要了解过多线程,我们就知道线程开始的顺序跟执行的顺序是不一样的。如果只是创建三个线程然后执行,最后的执行顺序是不可预期的。这是因为在创建完线程之后,线程执行的开始时间取决于CPU何...
    99+
    2024-04-02
  • C语言超详细讲解顺序表的各种操作
    目录顺序表是什么顺序表的结构体顺序表的接口函数顺序表相关操作的菜单顺序表的初始化添加元素陈列元素往最后加元素往前面加元素任意位置加元素删除最后元素删除前面元素 删除任意元素...
    99+
    2024-04-02
  • Java顺序表专题解读
    目录一 、前言二、顺序的定义三、实现顺序表3.1顺序表的API设计3.2 顺序表的代码实现插入示意图 :3.3完整的API概览:四、顺序表的测试:一 、前言 顺序表常用的一种,学习并...
    99+
    2024-04-02
  • Java线性表的顺序表示及实现
    目录前言一、什么是顺序表?二、顺序表的实现1. 准备工作2. 获取顺序表的元素个数3. 获取顺序表当前的容量4. 顺序表是否为空5. 在指定索引位置添加元素6. 在顺序表末尾添加元素...
    99+
    2024-04-02
  • C语言实现顺序表的基本操作的示例详解
    目录一、认识顺序表1.线性表2.顺序表的概念及结构二、顺序表的基本操作(接口实现)1.初始化顺序表2.打印顺序表3.尾插4.尾删5.扩容6.头插7.头删8.任意位置插入9.任意位置删...
    99+
    2022-11-13
    C语言顺序表基本操作 C语言顺序表操作 C语言顺序表
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作