为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第4天【养成记】嵌入式挑战第4天,数据结构-线性表之单链表2

标签:
C 嵌入式

1.单链表操作

1.判空

int IsEmptyList(LinkList L)
{
    return (L->next == NULL ? 1 : 0);
}

2.删除

图片描述
添加一个标志位flag用于判断删除的数据是否存在

int DeleteDataList(LinkList L, ElemType data)
{
    LinkList p = L, q; // p指向头结点
    int flag = 0;
    if (IsEmptyList(L))
    {
        return -1; //空链表返回-1
    }
    while (p->next != NULL)
    {
        if (p->next->data == data)
        {
            q = p->next;
            p->next = q->next;
            free(q);
            q = NULL;
            flag = 1;
        }
        else
        {
            p = p->next;
        }
    }
    if (flag == 0)
    {
        return -2;
    }
    else
    {
        printf("deletd %d success!\n", data);
    }
    return 0;
}

3.逆序

首结点data域置为NULL,从首节点后面一个元素开始遍历插入头结点后面。

void ReserveList(LinkList L)
{
    LinkList p = L->next->next, q;
    L->next->next = NULL;

    while (p != NULL)
    {
        q = p->next;
        p->next = L->next;
        L->next = p;
        p = q;
    }
}

4.清空

从头结点开始遍历释放

void ClearList(LinkList L)
{
    LinkList p = L, q;
    while (p != NULL)
    {
        q = p->next;
        free(p);
        p = q;
    }
}

2.单向循环链表

就用一句话总结:单链表尾结点的指针域存放头节点的地址,这种首尾相连的链表,叫做单向循环链表。
图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消