博客
关于我
链表学习:静态链表
阅读量:729 次
发布时间:2019-03-21

本文共 1390 字,大约阅读时间需要 4 分钟。

链表概念

链表由一系列节点组成,每个节点包含两个域:数据域用于存储数据,指针域用于存储指向下一个节点的地址。在内存中,链表存储是非连续的。 例如: ```struct LinkNode{ int age; struct LinkNode* next; }```链表相比数组的主要优点是插入和删除操作效率高,但随机访问单个节点效率相对较低。

链表分类

链表可以分为以下几种: - 静态链表:节点数量和大小在编译时确定 - 动态链表:节点数量和大小在运行时动态扩展或缩减

链表还可以分为单向链表、双向链表和循环链表等形式。常见的链表结构包括:

  • 单向链表( Establishhd singly linked list, 简单链表)
  • 双向链表( doubly linked list, 双向链表)
  • 循环链表( circular linked list, 循环链表)
  • 单向循环链表( singly circular linked list, 单向循环链表)

链表与数组的主要区别

- **数组**:一次分配一块连续的存储空间。在使用时需要通过索引访问,随机访问效率高。 - **链表**:按需分配存储空间,只需将指针指向下一个节点即可,插入和删除操作效率高,但随机访问效率较低。

数组的优缺点:

  • 需要一次分配连续的内存区域,可能导致内存不足
  • 删除和插入元素效率低
  • 链表的优缺点:

  • 不需要一次性分配连续内存
  • 删除和插入元素效率高
  • 随机访问效率低
  • 静态链表的使用示例

    以下是静态链表的简单实现:
    #include 
    struct LinkNode{ int data; struct LinkNode* next; }; void test(){ struct LinkNode node1 = {10, NULL}; struct LinkNode node2 = {20, NULL}; struct LinkNode node3 = {30, NULL}; struct LinkNode node4 = {40, NULL}; struct LinkNode node5 = {50, NULL}; struct LinkNode node6 = {60, NULL}; node1.next = &node2; node2.next = &node3; node3.next = &node4; node4.next = &node5; node5.next = &node6; // 遍历链表 struct LinkNode* pCurrent = &node1; while (pCurrent != NULL) { printf("%d ", pCurrent->data); pCurrent = pCurrent->next; } } int main(){ test(); return 0; }

    注意事项:

    • 类似于数组的静态链表在最坏情况下可能会导致栈溢出或内储不足。
    • 对于更复杂的链表操作,建议使用动态链表。

    转载地址:http://vwlgz.baihongyu.com/

    你可能感兴趣的文章
    MySQL 基础架构
    查看>>
    MySQL 基础模块的面试题总结
    查看>>
    MySQL 备份 Xtrabackup
    查看>>
    mYSQL 外键约束
    查看>>
    mysql 多个表关联查询查询时间长的问题
    查看>>
    mySQL 多个表求多个count
    查看>>
    mysql 多字段删除重复数据,保留最小id数据
    查看>>
    MySQL 多表联合查询:UNION 和 JOIN 分析
    查看>>
    MySQL 大数据量快速插入方法和语句优化
    查看>>
    mysql 如何给SQL添加索引
    查看>>
    mysql 字段区分大小写
    查看>>
    mysql 字段合并问题(group_concat)
    查看>>
    mysql 字段类型类型
    查看>>
    MySQL 字符串截取函数,字段截取,字符串截取
    查看>>
    MySQL 存储引擎
    查看>>
    mysql 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
    查看>>
    MySQL 存储过程参数:in、out、inout
    查看>>
    mysql 存储过程每隔一段时间执行一次
    查看>>
    mysql 存在update不存在insert
    查看>>
    Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
    查看>>