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

    你可能感兴趣的文章
    Oracle 修改数据库表数据提交之后进行回滚
    查看>>
    UML-总结
    查看>>
    oracle 内存参数示意图
    查看>>
    Oracle 写存储过程的一个模板还有一些基本的知识点
    查看>>
    UML- 配置图(部署图)
    查看>>
    oracle 切割字符串加引号_使用Clean() 去掉由函数自动生成的字符串中的双引号...
    查看>>
    Oracle 创建 DBLink 的方法
    查看>>
    oracle 创建job
    查看>>
    oracle 创建一个用户,只能访问指定的对象
    查看>>
    oracle 创建双向备份,Materialized View 物化视图实现 Oracle 表双向同步
    查看>>
    oracle 创建字段自增长——两种实现方式汇总
    查看>>
    Oracle 升级10.2.0.5.4 OPatch 报错Patch 12419392 Optional component(s) missing 解决方法
    查看>>
    oracle 去重
    查看>>
    oracle 可传输的表空间:rman
    查看>>
    Oracle 启动监听命令
    查看>>
    Oracle 启动阶段 OPEN
    查看>>
    Oracle 在Drop表时的Cascade Constraints
    查看>>
    Oracle 在Sqlplus 执行sql脚本文件。
    查看>>
    Oracle 如何处理CLOB字段
    查看>>
    oracle 学习
    查看>>