07-单链表的定义

266 阅读1分钟

顺序表可以随时存取表中的任意一个元素,但插入删除需要移动大量元素

链式存储线性表时,不需要使用地址连续的存储单元,因此插入和删除不需要移动大量元素

只需修改指针,但也会失去顺序表可随机存取的优点。

单链表的定义

线性表的链式存储又称单链表,它是通过一组任意的存储单元来存储线性表中的数据元素。

为了建立数据元素之间的线性关系,对每个链表结点,除存放元素自身的信息外,还需要存放一个指向其后继的指针

image.png

typedef struct LNode {
    ElemType data; // 数据域
    struct LNode *next; // 指针域
} LNode, *LinkList
  • 小记

    typedef关键字——数据类型重命名。例如:

    typedef int zhengshu;
    

初始化单链表

  • 带头结点的单链表

    // 定义单链表结点类型
    typedef struct LNode {
        ElemType data; // 数据域
        struct LNode *next; // 指针域
    }LNode, *LinkList;
    
    bool InitList(LinkList &L) {
        L = (LNode *) malloc(sizeof(LNode)); // 分配一个头结点
        if (L == NULL) {
            return false;
        } 
        L->next = NULL; // 头结点指针为空,即创建一个空表
        return true;
    }
    
    void test() {
        LinkList L; // 声明一个指向单链表的指针
        InitList(L);
    }
    
  • 不带头结点的单链表

    // 定义单链表结点类型
    typedef struct LNode {
        ElemType data; // 数据域
        struct LNode *next; // 指针域
    }LNode, *LinkList;
    
    bool InitList(LinkList &L) {
    		L = NULL; // 空表,无任何结点
    		return true;
    }
    
    void test() {
    		LinkList L; // 声明一个指向单链表的指针
    		InitList(L); // 初始化一个空表
    }