• 链表


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

    链表由一个“头指针”变量,图中以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函数无返回值。

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

  • 相关阅读:
    js正则
    常用正则表达式
    JS
    Vue
    JS
    Cookie、Session和自定义分页
    ORM分组操作示例(与SQL语句的比较)以及基于对象和queryset的正反查询
    跨站请求伪造和csrf_token使用
    ORM之单表、多表操作
    Django中ORM介绍和字段及字段参数
  • 原文地址:https://www.cnblogs.com/CBDoctor/p/2318501.html
Copyright © 2020-2023  润新知