C++实现单链表删除倒数第k个节点的方法
本文实例讲述了C++实现单链表删除倒数第k个节点的方法。分享给大家供大家参考,具体如下:
题目:
删除单链表中倒数第k个节点
解题思路及算法代码:
标尺法,定义两个指针指向链表头结点,先让一个走k步,然后两个指针同时开始走,当先走的指针走到末尾时,后走的指针指向的结点就是需要删除的结点。
单链表结构定义:
typedefstructNode { intdata; structNode*next; }node,*pLinkedList;
删除倒数第K结点操作代码:
//head表示头结点 Node*removeLastKthNode(pLinkedListhead,intk) { if(NULL==head->next||k<1) returnhead; pLinkedListcur=head;//1号指针 pLinkedListret=head;//2号指针,指向待删除节点 pLinkedListpre=NULL;//pdel待删除节点的前一个节点 /* head12345 cur ret */ while(k>0&&cur!=NULL) { k--; cur=cur->next; } //当链表走到终点时,k仍然大于0,可知k值大于链表长度 if(k>0&&cur==NULL) { cout<<"k值大于链表长度"<next; ret=ret->next; } /*k=2时 head12345NULL preretcur 即要求删除ret节点 */ pre->next=ret->next; free(ret); ret=NULL; returnhead; } }
希望本文所述对大家C++程序设计有所帮助。