不带头节点不带环的单向链表的一些操作(2)

判断链表是否为空

可以用三目运算符来化简代码
 329 //12.判断链表是否为空,若为空返回1,否则返回0
 330 int LinkListEmpty(LinkNode* head)
 331 {
 332 //    return head == NULL?1:0;
 333     if(head == NULL)
 334     {
 335     //空链表
 336     return 1;
 337     }
 338     return 0;
 339 }
求链表的长度

用size来统计链表的长度,创建一个指针cur,让cur指针最开始就指向链表的头部,创建一个循环,让size每次加1,然后再让cur指针后移,直到cur等于NULL,循环结束,详细见程序

 341 //13.求链表的长度(节点数)
 342 int LinkListSize(LinkNode* head)
 343 {
 344     if(head == NULL)
 345     {
 346     //空链表
 347     return 0;
 348     }
 349     LinkNode* cur=head;
 350     size_t size=0;
 351     while(cur!=NULL)
 352     {
 353         ++size;
 354         cur=cur->next;
 355     }
 356     return size;
 357 }

找链表的第一个节点

链表的第一个节点就是链表的头节点,因此直接返回链表头节点即可
 359 //14.找第一个节点
 360 LinkNode* LinkListFront(LinkNode* head)
 361 {
 362     return head;
 363 }

找链表的最后一个节点

新建一个指针cur,让cur开始指向链表的头节点,然后创建一个循环让cur一直指向cur的下一个元素,直到cur的下一个节点为NULL,循环结束,此时返回cur,就是最后一个节点,详细见程序
 365 //15.找最后一个节点
 366 LinkNode* LinkListBack(LinkNode* head)
 367 {
 368     if(head == NULL)
 369     {
 370         //空链表
 371         return NULL;
 372     }
 373     LinkNode* cur=head;
 374     while(cur->next!=NULL)
 375     {
 376     cur=cur->next;
 377     }
 378     return cur;                                                                                            
 379 }

链表销毁

类似于销毁单个元素,只不过将销毁的过程放在循环内部,详细见程序
 381 //16.链表销毁
 382 void LinkListDestroy(LinkNode** phead)
 383 {
 384     if(phead == NULL)
 385     {
 386     //非法输入
 387     return ;
 388     }
 389     if(*phead == NULL)
 390     {
 391     //空链表
 392     return ;
 393     }
 394     LinkNode* cur=*phead;
 395     while(cur!=NULL)
 396     {
 397     LinkNode* to_delete=cur;
 398     cur=cur->next;
 399     DestroyNode(to_delete);
 400     }                                                                                                      
 401     *phead == NULL;
 402 }
 403 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值