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函数无返回值。

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

  • 相关阅读:
    【集合】元组元素命名
    普通数组-队列
    稀疏数组
    Java基础 07 API概述 Scanner类 Random类 ArrayList类
    Java基础 06 类与对象、封装、构造方法
    Java基础 05 数组
    Java基础 04 IDEA、方法
    Java基础 04 [附] IDEA 的安装、配置与使用
    Java基础 03 流程控制语句
    Java基础 02 数据类型转换、运算符、方法入门
  • 原文地址:https://www.cnblogs.com/CBDoctor/p/2318501.html
Copyright © 2011-2022 走看看