C语言实现不带头结点链表的基本操作

本文介绍了如何在C语言中实现不带头结点的链表操作,包括头尾插法、有序插入以及增删查改。在链表删除操作中,强调了对空链表的处理,首节点删除以及防止悬空指针的方法。
typedef :起别名,可以方便修改数据类型
#include<stdio.h>
typedef struct node
{
        int num;
        struct node *pNext;
}Node_t,*pNode_t;
typedef struct {
        Node_t num;//数据
        pNode_t phead = NULL;//指针
}

一、不带头结点的链表的头尾插法

头插法:首先判断头指针是否为空,如果为空,将首尾指针指向新节点,如果不为空,则将新节点的指针指向首节点,然后首指针指向首节点。
 
void headInsert(pNode_t *ppHead, pNode_t *ppTail, int num)
{
        pNode_t pNew = (pNode_t)calloc(1, sizeof(Node_t));
        pNew->num = num;
        if (*ppHead== NULL)
        {
               *ppHead = pNew;
               *ppTail = pNew;
        }
        else
        {
               pNew->pNext = *ppHead;
               *ppHead = pNew;
        }
}
尾插法:同头插法一样,判断首指针是否为空,为空,首尾节点指向新节点,不空,将尾节点连接新节点,然后尾指针指向新节点
void tailInsert(pNode_t *ppHead, pNode_t *ppTail, int num)
{
        pNode_t pNew = (pNode_t)calloc(1, sizeof(Node_t));
        pNew->num = num;
        if (*ppHead == NULL)
        {
               *ppHead = pNew;
               *ppTail = pNew;
        }
        else
        {
               (*ppTail)->pNext = pNew;
               *ppTail = pNew;
   &n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值