顺序表—单链表的算法补充

1.带头指针的单链表的初始化(cpp和c语言两种语言实现)

c语言

Status InitList(LinkList* s)
{
    s = (LinkList*)malloc(sizeof(Node));   //动态获得SNode的字节数,从而开辟一块空间
    if (s != NULL) {
        s->next = NULL;
        return OK;
    }
    else {
        return ERROR;
    }
}

原文链接:https://blog.csdn.net/Conquer_ALL/article/details/102536618

cpp

Status InitList_L(LinkList&L){

L=new Lnode;

L->next=NULL;

return OK;

}

c和cpp实现初始化不同,但都是从内存中找到空间,获得存储空间的地址,赋值给相应的链表。

2.判断链表是否为空

注意一下空链表的含义

3.销毁链表

同样可以用c和cpp两种两种语言实现,不同的代码

关键步骤:L=L->next; 让指针移动,指向下一个结点,下一个结点赋值给L,先把头指针删除,再依次删除其他的结点。不能再插入结点,整个链表的空间都已经被释放了,不能再进行操作。

// 删除链表中为值为i的结点

Status DeleteList(LinkList* s, int i) {
    if (!empty(s)) {
        // 但删除结点的前一个结点
        Node* current = position(s, i);
        // 待删除的结点
        Node* toDel = current->next;

        current->next = toDel->next;

        free(toDel);         //c语言的关键字free
        toDel = NULL;

        return OK;
    }
    else {
        return ERROR;
    }
}
————————————————
原文链接:https://blog.csdn.net/Conquer_ALL/article/details/102536618

cpp的关键字为delete

循环算法:

(1)循环条件:L!=NULL; 或L

(2)结束条件:L==NULL    链表已经被删光了

4.清空链表

注意与销毁链表的区别

引入一个指针q作为中间值,更新地址,

还可以再插入结点,头指针仍然存在

注意循环语句的先后顺序

5.计算单链表的长度

遍历链表

i=0,计数的开始  p=p->next 指针移动,指向下一个结点



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绝迹刻本

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值