`

大话数据结构一:线性表的顺序存储结构

 
阅读更多

1. 线性表的顺序存储结构:指的是用一段地址连续的存储单元依次存储线性表的数据元素。


2. Java实现线性表的顺序存储结构:

// 顺序存储结构
public class SequenceList {
	private static final int DEFAULT_SIZE = 10; // 默认初始化数组大小
	private int size; // 当前数组大小
	private static Object[] array;

	public SequenceList() {
		init(DEFAULT_SIZE);
	}

	public SequenceList(int size) {
		init(size);
	}

	// 初始化数组大小
	public void init(int size) {
		this.size = 0;
		array = new Object[size];
	}

	public void add(int index, Object obj) {
		checkSize(index);
		if (size == array.length) {// 判断size如果等于length, 说明原数组装满了
			Object[] newArray = new Object[array.length * 3 / 2 + 1];//创建一个更大的数组
			System.arraycopy(array, 0, newArray, 0, array.length);//将原有数据复制到新数组
			array = newArray; // array指向新数组
		}
		for (int j = size; j > index; j--) {
			array[j] = array[j - 1]; // 将要插入位置后的数据元素往后移动一位
		}
		array[index] = obj;
		size++;
	}

	// 删除一个元素
	public void remove(int index) {
		if (size == 0) {
			throw new RuntimeException("list已空");
		}
		checkSize(index);
		for (int j = index; j < size - 1; j++) {
			array[j] = array[j + 1];
		}
		size--;
	}

	// 通过索引获取元素
	public Object get(int index) {
		checkSize(index);
		return array[index];
	}

	// 显示所有元素
	public void display() {
		for (int i = 0; i < size; i++) {
			System.out.print(" " + array[i]);
		}
	}

	// 获取列表长度
	public int size() {
		return size;
	}

	// 列表是否为空
	public boolean isEmpty() {
		return size == 0;
	}

	private void checkSize(int index) {
		if (index < 0 || index > size) // 判断如果获取的index越界, 抛出异常
			throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size);
	}
}
// 测试程序
public class SequenceTest {
	public static void main(String[] args) {
		SequenceList seqList = new SequenceList();
		seqList.add(0, 1);
		seqList.add(1, 2);
		seqList.add(2, 3);
		seqList.add(3, 4);
		seqList.add(4, 5);
		seqList.add(5, 6);
		seqList.add(6, 7);
		seqList.add(7, 8);
		seqList.add(8, 9);
		seqList.add(9, 10);
		seqList.add(10, 11);
		seqList.add(11, 12);
		seqList.display();
		System.out.println();
		seqList.remove(1);
		seqList.display();
	}
}
3. 插入和删除的时间复杂度:

元素插入到第i个位置或者删除第i个元素,需要移动n-i个元素,根据概率原理,每个位置插入或删除元素的可能性是相同的,为(n-1)/ 2。平均的时间复杂度为O(n)


4. 线性表顺序存储的优缺点:

优点:无须为表中元素逻辑关系而增加额外的存储空间,同时可以快速存取表中任一位置的元素。

缺点:插入和删除操作需要移动大量的元素,当线性表长度变化较大时,难以确定存储空间的容量。

分享到:
评论

相关推荐

    数据结构:线性表顺序存储

    线性表是计算机科学中一种基础且重要的数据结构,它由有限个相同类型的数据元素构成一个有序序列。在描述线性表时,我们通常强调以下四个特性:存在唯一的第一个元素和最后一个元素,以及除了两端元素外,每个元素都...

    数据结构教学课件:线性表顺序表.ppt

    数据结构教学课件:线性表顺序表.ppt

    《数据结构C++版》实验一:线性表的顺序存储结构实验报告

    《数据结构C++版》实验一的目的是让学生深入理解线性表的顺序存储结构,并熟练掌握C++程序设计的基本技巧。在这个实验中,学生需要通过类的定义来实现线性表,数据对象的类型可以自定义。以下是实验涉及的主要知识点...

    数据结构实验报告1线性表的顺序存储结构.doc

    实验报告的主题是“数据结构实验报告1:线性表的顺序存储结构”,旨在通过实践让学生掌握线性表在顺序存储结构中的基本操作,包括创建、插入和删除等。实验使用了Visual C++作为开发环境,并涉及到了C++编程语言。 ...

    数据结构——线性表顺序存储结构(C++代码)

    线性表是数据结构中最基础且重要的概念之一,它是由n(n≥0)个相同类型元素构成的有限序列。顺序存储结构则是线性表的一种常见实现方式,它将线性表中的元素按照一定的顺序存放在一块连续的内存区域中。这种存储...

    数据结构:线性表(顺序存储).ppt

    数据结构:线性表(顺序存储) 线性表是具有相同属性的数据元素的一个有限序列。线性表中的各元素都具有同种数据类型,表的长度可用 n(n&gt;...线性表是一种基本的数据结构,它的顺序存储和基本操作是非常重要的知识点。

    数据结构实验指导书,线性表顺序存储结构的操作

    线性表顺序存储结构的操作是数据结构中的一种重要概念,它广泛应用于计算机科学和软件工程中。通过本实验指导书,学生可以深入了解线性表的基本概念、顺序存储结构的实现方法和 C 语言编程的基本技能,从而为以后的...

    利用C++实现以下经典数据结构算法:线性表、栈、队列、数组(特殊矩阵、稀疏矩阵压缩)、串(朴素模式匹配、KMP算法)、树.zip

    利用C++实现以下经典数据结构与算法:线性表(顺序表、链表、静态链表、三元组)、栈(双栈、共享栈)、队列(任务调度、循环队列、双向队列、链队列)、数组(特殊矩阵、稀疏矩阵压缩)、串(朴素模式匹配、KMP算法...

    数据结构线性表的顺序存储结构

    实验 二 基于链式存储结构 实现线性表的基本的 常见的运算 提示: ⑴ 提供一个实现功能的演示系统 ⑵ 具体物理结构和数据元素类型自行选定 ⑶ 线性表数据可以使用磁盘文件永久保存

    实验一:线性表的存储结构定义及基本操作.doc

    6. 顺序存储数据结构和链式存储数据结构:顺序存储数据结构是将所有元素连续存储在一块内存空间中,而链式存储数据结构是将所有元素存储在独立的内存空间中,并使用指针连接每个元素。 7. 商品信息管理系统:商品...

    数据结构与算法:线性表的题库

    数据结构与算法:线性表的题库 线性表是一种基本的数据结构,它是由零个或多个数据元素组成的有序集合。线性表的存储结构可以分为顺序存储结构和链式存储结构两种。顺序存储结构是将所有元素存储在一块连续的存储...

    数据结构:线性表的顺序表示以及实现(C语言编写)

    线性表是计算机科学中数据结构的基本类型之一,它由有限个相同类型元素构成的序列。在本资源中,我们关注的是线性表的顺序表示和C语言的实现,这涉及到数组和指针等核心概念。 顺序表示是指线性表中的元素在内存中...

    数据结构: 线性表讲解实例

    数据结构: 线性表讲解实例。针对线性表的深入讲解。

    数据结构:线性表(链接存储).ppt

    数据结构:线性表(链接存储) 一、线性表的链接存储 线性表的链接存储是一种存储方式,它可以克服顺序存储的缺点。顺序存储需要一块连续的存储空间,但是当顺序表很大时,系统可能无法分配这么大的一块连续存储...

    数据结构教学课件:线性表链表.ppt

    数据结构教学课件:线性表链表.ppt

    数据结构实验报告-线性表顺序存储结构的操作及其应用

    线性表是数据结构中最基础的数据组织形式之一,它由一系列相同类型的数据元素组成,这些元素按照逻辑关系形成线性的序列。顺序存储结构则是通过连续的内存空间来存储线性表中的各个元素,便于实现快速访问。 #### ...

    数据结构--线性表的顺序存储结构(c语言实现)

    c语言实现的线性表顺序存储结构,包括初始化,设置线性表的值,增,删,改,查。

    线性表顺序存储的实现

    本文将深入探讨线性表顺序存储的实现,以及与其相关的算法和数据结构知识。 首先,顺序存储结构通常采用数组来实现。数组是一种在内存中连续存储的数据结构,每个元素可以通过下标访问。线性表的元素在数组中依次...

    数据结构——vc6对话框编程,线性表顺序存储操作

    顺序存储是数据结构的一种方式,其中元素在内存中的位置与其逻辑顺序对应。这种存储方式适合用于实现简单的操作,如遍历和查找,但不适用于频繁的插入和删除,因为这可能导致大规模的元素移动。 2. **VC6对话框...

    验证2:线性表子系统实验报告.doc

    链表是一种动态分配存储的数据结构,每个元素是一个独立的对象,并且每个对象都包含一个指向下一个元素的指针。 2. 线性表的特点 线性表有以下特点: * 顺序存储:线性表的元素可以顺序存储在连续的存储单元中。 ...

Global site tag (gtag.js) - Google Analytics