数据结构-链表

链式表就是针对顺序表的缺点来设计的,补足的就是顺序表的缺点

(头插示意图)

示意图

此处包含c语言知识点 :

  • 错误示例(如果只用一级指针)
    如果函数签名是 void SListPushBack(SListNode* phead, int x),而且调用 SListPushBack(pList, 1)
    函数内部的 phead 只是外部 pList 的一个副本,它最初也是 NULL
    即使你在函数里让 phead = newNode;,也只是修改了副本的值。外部的 pList 依然还是 NULL

  • 正确做法(使用二级指针)
    函数签名是 void SListPushBack(SListNode** pphead, int x),调用时传递 &pList
    函数内部的 pphead 是一个指针,它指向main函数中的 pList 变量。
    *pphead 就是解引用,它访问的就是main函数中的 pList
    所以 *pphead = newNode; 这条语句,直接修改了main函数中 pList 的值,让它从 NULL 指向了新创建的第一个节点。

  • 一级指针 (SListNode* phead):传入的是一个节点的地址。函数可以读取或修改这个节点和后续所有节点的 data 和 next,但不能修改头指针本身指向谁(即不能改变 pList 的值)。

  • 二级指针 (SListNode** pphead):传入的是头指针变量的地址。函数获得了“修改头指针本身的权力”,它可以改变 pList 的值,让它指向一个新的节点(尤其是在链表从无到有插入第一个节点时)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值