用C语言简单实现单链表

本文介绍了如何使用C语言实现单链表,包括链表的存储结构、节点定义、初始化、头插法、尾插法、删除、逆置、销毁及打印等操作。通过这些操作,解决了线性表在空间分配和数据元素逻辑关系上的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于长度变化较大的线性表,预先分配空间必须按照最大空间分配时,会有空间利用不充足、线性表扩容难的问题。解决这些问题的办法就是采用链式储存结构。
线性表的链式储存结构是指用一组任意的储存单元储存线性表中的数据。为了反应数据元素之间的逻辑关系,对于每个数据元素,不仅要表示它的具体内容,还要附加一个表示它的直接后继元素的储存位置的信息,这两部分信息组成数据元素的存储映像,成为结点(Node)。单链表中的每个结点只包含一个指针域。
在线性表的链式储存结构中,为了方便插入和删除算法的实现,每个链表附加一个头结点,并通过头结点的指针唯一表示该链表。从该指针所指的头结点出发,沿着该节点的链可以访问到每一个节点。
单链表中的节点类型

typedef struct Node
{
   
    int data;//数据域
    struct Node *next;//指向下一个结点
}Node,*List;

单链表的初始化

void InitList(List plist)
{
   
    assert(plist != NULL);
    if(plist == NULL)
    {
   
        return;
    }
    plist->next = NULL;
}

单链表的头插法
该方法从一个空链表开始,读取元素val,生成新的结点,将读取的数据放到新结点的数据域中,然后将该新结点插入到当前链表的表头上。

bool Insert_Head(List plist, int val)
{
   
    //创建新的结点
    Node *p = (Node*)malloc(sizeof(Node));
    p->data = val;<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值