#include <stdlib.h>
#include <stdio.h>
//The struct of list node
typedef struct Node
{
int iData;
struct Node* pNext;
}LNode;
/**
* Swap the place between two near nodes
*/
void nearLNodeSwap(LNode** pList)
{
//Nothing to do in the case of pList is NULL or just has one node
if(NULL == pList || NULL == *pList || NULL == (*pList)->pNext)
return ;
LNode* pre = NULL;
LNode* p = *pList;
LNode* q = p->pNext;
while(p != NULL && q != NULL)
{
if(p == (*pList)) //Head node
{
*pList = q;
}
else //Other nodes
{
pre->pNext = q;
}
p->pNext = q->pNext;
q->pNext = p;
pre = p;
p = p->pNext;
if(p != NULL)
q = p->pNext;
}
}
/**
*Create a List and init all of the nodes
*pList: the List be created
*listSize: list size
*return:return
交换单向链表的相邻节点
最新推荐文章于 2020-12-26 23:15:26 发布
本文介绍了如何通过迭代和递归两种方式,交换链表中相邻节点的位置,涉及数据结构和算法的知识,探讨了链表操作的基本技巧。
摘要由CSDN通过智能技术生成