怎么销毁单链表

 

什么叫空的单链表?就是我有一个头结点,他的指针域为空,后面什么元素也没有,他就是一个空表,但头结点已经有了

 

Linklist这种类型是是指向两个成员的结点的指针*

L一开始没有,分配好空间后才有值,获得的值仍然通过L来获得,所以L用引用型变量。

第一步先从内存中找到这么一块空间

两种办法

 

1直接new一个结点,这个new的结果是指向这个结点的指针,所以把这个新结点的地址直接赋值给L

 

2也可以用C语法,这块空间有多大呢?用malloc分配出来,然后转换成(Linklist)这种类型,就是指向一个结点的指针

即,本来是一块空间,经过这个运算就变成了这块空间的地址,然后把这块空间的地址赋值给L

L就指向这个空的结点。

然后给next域置空,

 

操作结束

就是从内存中找到头结点,然后用指针变量L指向它,然后给这个结点的指针域置空。

接下来补充几个简单的算法

1.判断是不是空链表,只需要判断指针域是不是空就行

 2,销毁单链表

从头指针开始,把包括头结点的所有结点都释放

 

一个变量要想指向某个空间,只需把空间的地址赋给他就行

 

头结点的地址在头指针里存着,而L就是存储这个结点的地址,直接将L的值赋值给p就行,然后指针p就指向头结点。

。 

若直接删的话,L的地址也没了,就找不到下个节点在哪里了,所以要先将L往后移一下,然他来存储下一个结点的地址

 

 

而L是指向头结点的形式,这个a1的地址在哪存着呢?在头结点next的地址域里存着

 

 

就是L所指的这个结点的next域重新赋值给L,L就只向下一个结点,这是最关键的操作:怎么让指针指向下一个结点。因为Next域里的值是下一结点的地址。

然后接可以free (p)了,这是c语言的语法,这个要对应前面的malloc,要是用delete p,前面就要用new

接下来的操作一样,反复进行p =L;L =L->next;

怎么结束呢?p或L等于空。L非空也可以直接用L表示

 

 

 

把空赋值给L;最后空等于p;

算法如下:

p指向当前要销毁的结点,销毁是一个反复动作,所以需要一个循环,条件为L非空 

 

 

  • 9
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值