• 单链表(2)


    单链表实现

    设计好的结构写在头文件里面。

    可以将顺序表的头文件复制到单链表里面,将里面所有的DPSQList替换为List,所有的PS替换为plist,所有顺序表替换为链表。

    也就是DPSQList PS换为List plist。顺序表PS换为链表plist。

    单链表比较于顺序表,多了个插入中的,在插入函数前的头插和尾插。

    在查找key值前面加一个,获取数据结点的个数,也就是获取有效数据的个数。

    在链表里面的结点的地址 作用相当于顺序表中的下标,所以其查找的返回类型为Node*。

    返回前驱回后继的数据的地址也同理。

    1. typedef struct Node
    2. {
    3. int data;//结点中的数据域
    4. struct Node* next;//指向后继数据地址的指针
    5. }Node,*List;//List==*Node
    6. //链表的基本实现操作(常用的),应用操作一般不放在这里面
    7. //可以将链表的复制过来
    8. //初始化
    9. void InitList(List plsit);//Init:初始化。DplsitQList为链表结构体指针数据类型+其定义 的变量,名字为plsit
    10. //头插(插入在头结点后面的第一个有效数据的位置上)
    11. bool Insert_head(List plist,int val);
    12. //尾插
    13. bool Insert_tail(List plist, int val);
    14. //插入数据,在链表plsit的pos位置插入val数据元素
    15. //插入操作有2种结果,插入成功或失败,所以其插入函数原型是bool类型,只返回2种结果
    16. bool Insert(List plsit, int pos, int val);//参数就是实现这个函数的使用需要外界提供给它的数据东西
    17. //判空(判断链表是否为空)
    18. bool IsEmpty(List plsit);
    19. //获取数据结点的个数
    20. int Getlength(List plsit);
    21. //在链表plsit中 查找第一个key值,找到返回key值的结点地址,没有找到返回空NULL
    22. //所以其查找的返回类型为Node*
    23. Node* Search(List plsit, int key);
    24. //删除链表plsit中pos位置的值,删除跟插入一样成功或失败2种结果
    25. bool DelPos(List plsit, int pos);
    26. //删除第一个val的值
    27. bool DelVal(List plsit, int val);
    28. //返回key的前驱地址,如果不存在(key无前驱,在表头)返回NULL
    29. int GetPrio(List plsit, int key);
    30. //返回key的后继下标,如果不存在(key无后继,在表尾)返回NULL
    31. Node* GetNext(List plsit, int key);
    32. //输出链表,不是对链表内部的操作,但为了展示我们对链表的操作是否正确,有时要输出看一下
    33. void Show(List plsit);
    34. //清空链表中的数据
    35. void Clear(List plsit);
    36. //销毁整个链表内存(交回)
    37. void Destroy(List plsit);

  • 相关阅读:
    Day24力扣打卡
    2023成都.NET线下技术沙龙圆满结束
    计算机网络---第二章物理层---通信基础
    WSL-Ubuntu20.04训练环境配置
    VScode 入门TypeScript 常见错误
    14.Linux软件包管理(RPM包的管理(了解))
    【蓝桥杯Web】第十四届蓝桥杯(Web 应用开发)模拟赛 1 期-职业院校组 | 精品题解
    使用transformers进行端到端的目标检测
    JavaScript 正则表达式
    【COMP329 LEC1 Agents and Autonomous Systems】
  • 原文地址:https://blog.csdn.net/wzdxsa/article/details/134266220