博客
关于我
链表学习:静态链表
阅读量: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/

    你可能感兴趣的文章
    Postman被低估的功能 — 自动化接口测试
    查看>>
    Postman被低估的功能 — 自动化接口测试
    查看>>
    Postman轻松签名,让SHA256withRSA保驾护航
    查看>>
    Postman还能做Mock?又学了一招!
    查看>>
    Postman还能做Mock?又学了一招!
    查看>>
    postman进行http接口测试
    查看>>
    Postman高阶技能:Collection集合批量运行!
    查看>>
    postMessage跨标签页共享数据
    查看>>
    QImage对一般图像的处理
    查看>>
    post为什么会发送两次请求?
    查看>>
    Post表单提交TextArea的值出现转译乱码问题 - Spring MVC处理表单提交
    查看>>
    Power BI 中的 Python 可视化需要什么设置?任何特定的 matplotlib 包版本或系统设置?
    查看>>
    Power BI:如何在 Power Query 编辑器中将 Python 与多个表一起使用?
    查看>>
    power english (3) main text -emotion mastery - focus
    查看>>
    POWER ENGLISH (6) - MODEL
    查看>>
    power english (1) —— passion
    查看>>
    Power English (1) 原文
    查看>>
    power English (3)原文
    查看>>
    POWER ENGLISH(7)- repetition
    查看>>
    SpringBoot中集成SpringBatch详细解析与实战示例(CSV文件读取十万条数据进行业务处理后写入Mysql数据库)
    查看>>