顺序表的实现-java

本文介绍了线性表的定义和特点,并详细探讨了顺序表的实现,包括顺序表的定义、打印、尾插、头插、尾删、头删、任意位置插入和删除的操作。分析了各项操作在不同情况下的时间复杂度,强调了顺序表操作的主要时间消耗在于元素移动。最后给出了顺序表的查找和销毁操作。
摘要由CSDN通过智能技术生成

一.顺序表的介绍

1.线性表的定义

线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列…
线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物
理上存储时,通常以数组和链式结构的形式存储。
在这里插入图片描述

2.线性表的特点

表中元素的个数是有限的。
表中的元素具有逻辑上的顺序。
表中元素都是数据元素,每个元素都是单个元素。
表中元素的数据类型都相同。

在这里插入图片描述
在这里插入图片描述

二.顺序表的实现

1.顺序表的定义

线性表的顺序存储又称顺序表。它是用一组地址连续的存储单元依次存储线性表中的数据元从而使得逻辑上相邻的两个元素在物理位置上也相邻。第1个元素存储在线性表的起始位置,
元素的存储位置后面紧接着存储的是第i+1个元素,称i为元素a,在线
顺序表的特点是表中元素的逻辑顺序与其物理顺序相同。

class Seqlist {
   
    public int[] elum;//数组的大小
    public int size;//数组的有效元素的个数
    public static final int capacity = 10;//数组容量

    public Seqlist() {
   
        this.elum = new int[10];//数组开辟的大小为10;
    }

数组可以是静态分配的,也可以是动态分配的。在静态分配时,由于数组的大小和空间事先已经固定,一旦空间占满,再加入新的数据就会产生溢出,进而导致程序崩溃。而在动态分配时,存储数组的空间是在程序执行过程中通过动态存储分配语句分配的,一旦数据空间占满,就另外开辟一块更大的存储空间,用以替换原来的存储空间,从而达到扩充存储数组空间的目的,而不需要为线性表一次性地划分所有空间。

2.顺序表的打印

 public void disprint() {
   
        for (int i = 0; i < size; i++) {
   
            System.out.println(elum[i] + " ");
        }
        System.out.println();
    }

3.顺序表的尾插

 public void SeqlstPushBack(int x) {
   
        if (size == capacity) {
   
            elum = Arrays.copyOf(elum, 2 * elum.length);
        }
        elum[size] = x;
        size++;
    }

将第i个元素及其后的所有元素依次往后移动一个位置,腾出一个空位置插入新元素e,顺序表长度增加1,插入成功

``4.顺序表的头插

 public void SeqlistPushFront(int x) {
   
        if (size == capacity) {
   
            elum = Arrays.copyOf(elum, 2 * elum.length);
        }
        for (int i = size - 1; i >= 0; i--) {
   
            elum[i 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值