zoukankan      html  css  js  c++  java
  • 链表

    链表是一种常见的重要的数据结构。它是动态的进行内存分配的一种结构。

    链表由一个“头指针”变量,图中以head表示,它存放一个地址,该地址指向一个元素。链表中的每一个元素称为“结点”,每个结点都应该包含两个部分:用户需要的实际数据和下一个结点的地址。可以看出,head指向第一个元素;第一个元素又指向第二个元素......直到最后一个元素,该元素不再指向其他元素,它称为“尾表”,它的地址部分放一个"NULL"(表示”空地址“),链表到此结束。

    可以看到,链表中的各元素在内存中不是连续存放的。要找到某一元素,必须先找到上一个元素,根据它提供的下一个元素地址才能找到下一个元素。如果不提供“头指针”(head),则整个链表都无法访问。我们通过观察结点的结构可以知道,采用结构体变量来作为链表中的结点是最合适的。(可以理解为一个结构体对应一个结点)。

    链表分为静态链表和动态链表。静态链表不提。动态链表需要事先分配内存,而内存分配函数包括malloc函数和calloc函数和free函数

    malloc函数的原型为

    void *malloc (unsigned int size)

    其作用是在内存的动态存储区中分配一个长度为size的连续空间。此函数的返回值是一个指向分配域起始地址的指针(类型为void),如果未能分配成功,那么返回值为NULL(空指针)。

    calloc函数的原型为

    void *calloc (unsigned n,unsigned size)

    其作用是在内存的动态存储区中分配n个长度为size的连续空间。函数返回一个指向分配域起始地址的指针;否则,返回为NULL.
     

    free函数的原型为

    void free(void *p)

    其作用是释放由P指向的内存区。P是最近一次调用calloc或malloc函数时返回的值,free函数无返回值。

    链表的基本操作包括:建立一个链表、输出一个链表、删除一个链表、添加一个链表。

  • 相关阅读:
    javascript中new Date()的浏览器兼容性问题
    js 时间格式化
    HTML5 JS实现搜索匹配功能
    PHP中preg_match正则匹配的/u /i /s是什么意思
    微信开放接口获取用户昵称保存到MySQL中为空白
    linux下源码安装软件
    格式化MYSQL时间戳函数FROM_UNIXTIME
    Zabbix-proxy安装部署
    使用ss命令对tcp连接数和状态的监控性能优化
    Zabbix使用netstat监控会话
  • 原文地址:https://www.cnblogs.com/CBDoctor/p/2318501.html
Copyright © 2011-2022 走看看