数据结构线性表

线性表的定义

线性表是一种逻辑结构,由相同数据类型的有限序列组成。元素之间存在顺序关系,除首尾元素外,每个元素有且仅有一个直接前驱和一个直接后继。

线性表的基本操作

  • 初始化:创建空表。
  • 插入:在指定位置添加元素。
  • 删除:移除指定位置的元素。
  • 查找:按值或位置检索元素。
  • 修改:更新指定位置的元素值。
  • 遍历:顺序访问所有元素。
  • 判空/判满:检查表的状态。

线性表的存储结构

顺序存储(顺序表)

使用连续的存储单元依次存放元素,逻辑顺序与物理顺序一致。
特点

  • 随机访问高效(时间复杂度 O(1))。
  • 插入/删除需移动元素(平均时间复杂度 O(n))。
  • 需预先分配固定空间,可能浪费或溢出。

代码示例(C语言)

复制代码
#define MAX_SIZE 100  
typedef struct {  
    int data[MAX_SIZE];  
    int length;  
} SeqList;  

// 初始化  
void InitList(SeqList *L) {  
    L->length = 0;  
}  

// 插入  
int InsertList(SeqList *L, int pos, int value) {  
    if (pos < 1 || pos > L->length + 1 || L->length >= MAX_SIZE)  
        return 0; // 失败  
    for (int i = L->length; i >= pos; i--)  
        L->data[i] = L->data[i - 1];  
    L->data[pos - 1] = value;  
    L->length++;  
    return 1; // 成功  
}  
链式存储(链表)

通过指针链接节点,节点包含数据域和指针域。
类型

  • 单链表:每个节点指向下一个节点。
  • 双向链表:节点包含前驱和后继指针。
  • 循环链表:尾节点指向头节点。

特点

  • 动态分配空间,无需预定义大小。
  • 插入/删除效率高(时间复杂度 O(1),若需查找前驱则为 O(n))。
  • 随机访问效率低(时间复杂度 O(n))。

代码示例(单链表)

复制代码
typedef struct Node {  
    int data;  
    struct Node *next;  
} ListNode;  

// 创建节点  
ListNode *CreateNode(int value) {  
    ListNode *node = (ListNode *)malloc(sizeof(ListNode));  
    node->data = value;  
    node->next = NULL;  
    return node;  
}  

// 头插法  
void InsertAtHead(ListNode **head, int value) {  
    ListNode *newNode = CreateNode(value);  
    newNode->next = *head;  
    *head = newNode;  
}  

应用场景

  • 顺序表:元素数量固定、频繁查询的场景(如数组存储静态数据)。
  • 链表:动态增删、内存灵活分配的场景(如实现队列、栈或图邻接表)。

性能对比

操作 顺序表 链表
访问元素 O(1) O(n)
插入/删除 O(n) O(1)
空间灵活性

通过理解逻辑结构与存储实现的差异,可结合实际需求选择合适结构。

相关推荐
To_OC4 小时前
LC 131 分割回文串:刚学回溯时,我连怎么切字符串都想不明白
javascript·算法·leetcode
旖-旎5 小时前
LeetCode 518:零钱兑换||(完全背包)—— 题解
c++·算法·leetcode·动态规划·背包问题
To_OC6 小时前
LC 42 接雨水:暴力超时卡半天?前后缀数组一用就通了
javascript·算法·leetcode
delishcomcn7 小时前
AI视觉识别+分切算法:电化铝缺陷检测与裁切一体化解锁
人工智能·算法
触底反弹7 小时前
深入理解大模型采样:Temperature、Top-K、Top-P 的原理与实战
人工智能·算法·面试
雪碧聊技术7 小时前
力扣 LCR 091. 粉刷房子 —— 动态规划入门详解
算法·动态规划
延凡科技10 小时前
多场景落地复盘:端边云架构无人机智能巡检系统设计与实践
大数据·数据结构·人工智能·科技·架构·无人机·能源
CV-Climber10 小时前
检索技术的实际应用
人工智能·算法
hhzz11 小时前
Tiger AI Platform平台中增加人脸识别功能
图像处理·人工智能·算法·计算机视觉·大模型