顺序表和链表的简单介绍

目录

  • 一、线性表
    • 1、基本概念
  • 二、顺序表
    • 1、概念
    • 2、实现功能
      • (1)、插入
      • (2)、删除
      • (3)、查找
      • (4)、修改
  • 三、链表
    • 1、概念
    • 2、功能实现
      • (1)、插入
      • (2)、删除
      • (3)、查找
  • 四、总结

一、线性表

1、基本概念

线性表是一组同类型数据的集合,逻辑结构为线性结构,对于任何一个非空线性表都有以下特点

  • 有且只有一个结点无前驱(头结点)
  • 有且只有一个结点无后进(尾结点)
  • 除头结点外,其他结点有且只有一个前驱
  • 除尾结点外,其他结点有且只有一个后进

注意:线性表的定义只是逻辑上是线性结构,物理上不一定有关系

二、顺序表

1、概念

顺序表的本质是一个顺序存储的线性表,是用一组地址连续的存储单元依次存储线性表的数据元素,一般情况使用数组储存,特点是逻辑上相邻的元素,其物理次序也是相邻的。顺序表一般可分为:

  • 静态顺序表:使用定长数组存储。
  • 动态顺序表:使用动态开辟的数组存储。

2、实现功能

顺序表的的功能实现比较简单,就相当于对数组的增删查改,Java集合框架中自带的类ArrayList就是一个顺序表。

(1)、插入

插入分为两种,一种是末尾插入,一种是中间插入。
因为是一个数组,所以中间元素的插入会带动其他元素的移动。
顺序表和链表的简单介绍_第1张图片

public void add(int pos, int data) {
   
        if (isFull()){
   
            System.out.println("顺序表已满,需要扩充");
            this.elem = Arrays.copyOf(elem,elem.length*2);
        }
        if (pos < 0||pos > this.usedSize){
   
            return;
        }
        for (int i = usedSize-1 ; i <= pos ; i--) {
   
            elem[i+1] = elem[i];
        }
        elem[pos] = data;
        usedSize++;
    }

(2)、删除

删除和插入大致上相同,也分为两种,一种是删除末尾元素,一种是删除中间元素

public void remove(int toRemove) {
   
        for (int i = 0; i < this.usedSize - 1; i++) {
   
            if (elem[i] == toRemove) {
   
                for (int j 

你可能感兴趣的:(链表,数据结构)