三指针法实现单链表的逆置
#include <stdio.h>
#include <stdlib.h>
typedef int DataType;
typedef struct Node {
struct Node* nest;
DataType data;
}Node,*PNode;
//三指针法(不带头结点)
PNode SListRever_ThreePoint(PNode pHead) {
if (pHead == NULL || pHead->nest==NULL) {
return NULL;
}
PNode pFirst = pHead;
PNode pMid = pHead->nest;
PNode pLast = pHead->nest->nest;
if (pLast != NULL) {
pFirst->nest = NULL;
pMid->nest = pFirst;
pFirst = pMid;
pMid = pLast;
pLast = pLast->nest;
}
else {
pFirst->nest = NULL;
pMid->nest = pFirst;
}
while (pLast != NULL) {
pMid->nest = pFirst;
pFirst = pMid;
pMid = pLast;
pLast = pLast->nest;
}
pMid->nest = pFirst;
return pMid;
}
本文详细介绍了如何使用三指针法在不带头节点的情况下逆置单链表。通过设置pFirst、pMid和pLast三个指针,逐步调整链表节点的连接关系,最终实现链表的反转。这种方法简洁高效,适用于理解链表操作。
6407

被折叠的 条评论
为什么被折叠?



