顺序表的基本理解

本文详细介绍了顺序表,一种基于数组的数据结构,其特点包括连续存储、快速访问、固定大小和低效插入删除。文章还提供了顺序表在数组操作、线性表和算法实现中的应用场景,以及示例代码展示了如何使用C语言实现顺序表的基本操作。
摘要由CSDN通过智能技术生成

顺序表是一种基于数组的数据结构,用于存储一组具有相同类型的元素。顺序表中的元素在内存中是连续存储的,通过索引可以快速访问任意位置的元素。

顺序表的特点包括:
- 连续存储:顺序表中的元素在内存中是连续存储的,通过元素的索引可以计算出元素在内存中的物理地址。
- 快速访问:由于元素连续存储,可以通过索引直接访问任意位置的元素,访问时间复杂度为O(1)。
- 固定大小:顺序表的大小在创建时被确定,并且在运行时无法动态改变,需要预先分配足够的内存空间。
- 插入和删除效率低:在顺序表中插入和删除元素可能需要移动其他元素的位置,导致效率较低,时间复杂度为O(n)。

顺序表的应用场景:
- 数组操作:顺序表可以用于实现各种基于数组的操作,如查找、插入、删除和排序等。
- 线性表:顺序表是线性表的一种实现方式,适用于需要频繁访问和修改元素的场景。
- 算法实现:顺序表常用于算法的实现,如动态规划、贪心算法和分治算法等。

比如:
#include <stdio.h>

#define MAX_SIZE 100 // 最大容量

typedef struct {
    int data[MAX_SIZE]; // 存储元素的数组
    int length; // 当前长度
} SequentialList;

void initList(SequentialList *list) {
    list->length = 0;
}

// 向顺序表末尾插入元素
void insert(SequentialList *list, int element) {
    if (list->length >= MAX_SIZE) {
        printf("顺序表已满,无法插入元素。\n");
        return;
    }
    list->data[list->length] = element;
    list->length++;
}

// 获取指定索引处的元素
int get(SequentialList *list, int index) {
    if (index < 0 || index >= list->length) {
        printf("无效的索引,无法获取元素。\n");
        return -1;
    }
    return list->data[index];
}

// 删除指定索引处的元素
void removeElement(SequentialList *list, int index) {
    if (index < 0 || index >= list->length) {
        printf("无效的索引,无法删除元素。\n");
        return;
    }
    for (int i = index; i < list->length - 1; i++) {
        list->data[i] = list->data[i + 1];
    }
    list->length--;
}

// 获取顺序表的当前长度
int getLength(SequentialList *list) {
    return list->length;
}

int main() {
    SequentialList list;
    initList(&list);

    insert(&list, 10);
    insert(&list, 20);
    insert(&list, 30);

    printf("顺序表中的元素: ");
    for (int i = 0; i < getLength(&list); i++) {
        printf("%d ", get(&list, i));
    }
    printf("\n");

    removeElement(&list, 1);

    printf("删除元素后的顺序表: ");
    for (int i = 0; i < getLength(&list); i++) {
        printf("%d ", get(&list, i));
    }
    printf("\n");

    return 0;
}

它定义了一个 SequentialList 结构体,包含一个数组 data 用于存储元素,以及一个 length 变量表示当前长度。

initList 函数用于初始化顺序表,insert 函数用于在顺序表末尾插入元素,get 函数用于获取指定索引处的元素,removeElement 函数用于删除指定索引处的元素,getLength 函数用于获取顺序表的当前长度。

再看up的视频 记录一下今天是2024.3.3 /hfgydx/znkxyjs/2023217~~~/wyt

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值