不带头节点不带环的单向链表的一些操作(2)
程序员文章站
2024-03-21 13:32:16
...
判断链表是否为空
可以用三目运算符来化简代码
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
下一篇: 整理项目文档时用的java代码