单链表的基本操作大全之C语言实现(一)

单链表的基本操作大全之C语言实现

1. 单链表的定义

链表是通过一组任意的存储单元来存储线性表中的数据元素,这些存储单元可以是连续的也可以是不连续的。为了建立起数据元素之间的关系,对于每个数据元素除了存放数据元素自身的信息外,还必须有包含的指示该元素直接后继元素存储位置的信息,这两部分信息组成一个结点,即每个结点都有至少包括两个域,一个域存储数据元素信息,称为数据域,另一个域存储直接后继的地址,称为指针域

    typedef struct node{
        int data;    //数据域
        struct node *next;    //指针域
    }NODE;

当n个元素的线性表通过每个结点的指针域连接成了一条“链子”,我们形象的称之为链表。

2. 建立单链表

建立单链表有两种方法,一种是头插法,一种是尾插法。
在主函数中调用函数时,使用一个NODE *类型的指针接收函数的返回值。

2.1初始化一个链表结点

每次malloc的结点都要初始化,因此写成一个函数。

    //初始化一个节点
    NODE *initnode(NODE *pnode, int data)
    {
            pnode = (NODE *)malloc(sizeof(NODE));
            pnode->data = data;//初始化数据域
            pnode->next = NULL;//初始化指针域为NULL

            return pnode;
    }

2.2头插法建立链表

在链表的头部插入结点建立单链表,称为“头插法”。

    //创建一个新节点(头插法)
    NODE *createlink_byhead(NODE *phead, int data)
    {
            NODE *pnode = initnode(pnode, data);//初始化一个结点
            NODE *ptmp = phead;

        if(NULL == phead){    //链表为空,直接返回初始化的结点
                return pnode;
        }else{
                phead = pnode;    //将新申请的结点插在phead后面,也就是整个链表的最前面
                pnode->next = ptmp;
        }

        return phead;
}

因为每次新结点都会插在链表的头部,则数据读入的顺序和线性表中的逻辑顺序正好相反。

2.3尾插法建立链表

在链表的尾部插入结点建立单链表,简称”尾插法“。

    //创建一个链表节点(尾插法)
    NODE *createlink_bytail(NODE *phead, int data)
    {
            NODE *pnode = initnode(pnode, data);//初始化结点
            NODE *ptmp = phead;

        if(NULL ==
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值