c 语言链表 笔记

链表初始化时需要二级指针

//此处的二级指针即,ppHead指向pHead指向的值 
NodeType *pHead = NULL;
CreaList(&pHead);
//传地址   
static void CreaList(NodeType **ppHead)
{
//这里用ppHead二级指针指向pHead指针的地址 
    NodeType *pNew;     
 //*pHead指向pHead地址对应的内容,即头指针指向的内容,一级指针    
    *ppHead = pNew; 
}
NodeType *pHead = NULL;

CreaList(pHead);
//此时是值传递,传的是一个指针的值,不是地址
static void CreaList(NodeType *ppHead)
{
//这进的ppHead是函数体内新建的,指向mian函数中的pHead同一个值,但不与pHead是同一个指针同一个地址
    NodeType *pNew;     
  //此时ppHead赋值是函数内ppHead指针赋值,不与main中pHead挂钩,函数结束,ppHead销毁
    ppHead = pNew;
}
typedef void SeqList;        把void命名成SeqList
typedef void SeqListNode;

用void封装,就不能在外部用修改 比如 SeqList list ; list->length ; 就会出错,因为list是空指针

typedef unsigned int TSeqListNode;

typedef struct _tag_SeqList
{
    int capacity;
    int length;
    TSeqListNode* node;
} TSeqList;



void SeqList_Clear(SeqList* list) // O(1)
{
    TSeqList* sList = (TSeqList*)list;         #所以在插入等的函数中,转化为真实的SeqList类型
    
    if( sList != NULL )
    {
        sList->length = 0;
    }
}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值