
原C语言实现单链表的逆置
h___q阅读数:9692018-04-19
欢迎大家到我博吃素的狗狗:吽吽 欢迎转载,请注明原创出再嫁作者:catia更新:第九十二章二十七岁的年纪,怎样都不算年轻了经历了七年之痒,被曾经山盟海誓的夫君以七年无所出的名义休弃,她心碎欲绝本以为就这样了此残生,却没发现,有两道目光,已追随了她经年之久咳咳,尝试一下种田文~也~俺突然发现单链表的逆置,不论俺的女主17岁还是27岁,稀罕的都是华丽丽20岁沉稳正太君~小正太,俺稀罕小正太~~~欢迎进入我的专栏,收藏作者,以便圈养我的文文,欢迎点击穿越~(按发表顺序排列)喜欢的同学,就请点击标题下的【收藏此文章】吧,一有更新就看得到了哦拒绝转载,请尊重作者权益朋友的轻松向女尊文单链表的逆置,欢迎捧场...查看详情>>。
单链表的逆置有多种方法可以实现,但根据时间复杂度来讲,最简单的方法有两种:
typedef int DataType;//类型名重命名
typedef struct Node
{
struct Node* _pNext;
DataType _data;
}Node,*PNode;//定义一个单链表
PNode SListRever_ThreePoint(PNode pHead)
{
PNode pFirst = pHead;
PNode pMid = pHead->_pNext;
PNode pLast = pHead->_pNext->_pNext;//设置三个指针分别指向单链表的前三个节点
if (NULL == pHead)
return NULL;
pMid->_pNext = pFirst;//让中间的节点指向前面的节点
pFirst->_pNext = NULL;//将第一个节点的_next指针置空
pFirst = pMid;
pMid = pLast;
pLast = pLast->_pNext;//让三个指针分别向后前进一个节点
while (pLast)
{
pMid->_pNext = pFirst;
pFirst = pMid;
pMid = pLast;
pLast = pLast->_pNext;
}//当末尾的指针没有到NULL时,一直让中间的指针指向前面的指针
pMid->_pNext = pFirst;//跳出循环的时候,只剩下Mid指针没有指向First指针
return pMid;
}
画图理解:







在链表首个节点前插入它后面的节点。
typedef int DataType;//类型名重命名
typedef struct Node
{
struct Node* _pNext;
DataType _data;
}Node,*PNode;//定义一个单链表
void SlistRever_PushFront(PNode pHead)
{
PNode pfirst = pHead;
PNode pdel = NULL;
PNode pCur = pHead->_pNext;
while (pCur != NULL)
{
SListNodeInsertFront(pfirst, pCur->_data);//在第一个节点的前面插入一个节点
pdel = pCur;
pCur = pCur->_pNext;
SListErase(pHead, pdel);//删除被插入的节点
pfirst = pHead;
}
}
void SListNodeInsertFront(PNode pos,DataType data)
{
PNode NewNode = NULL;
if (NULL == pos)
{
printf("插入地址无效\n");
return 0;
}
else
{
NewNode = (PNode)malloc(sizeof(Node));
NewNode->_pNext = pos->_pNext;
pos->_pNext = NewNode;
NewNode->_data = pos->_data;
pos->_data = data;
}
}
void SListErase(PNode pHead, PNode pos)
{
PNode pdel = pHead;
PNode pback = pHead;
//assert(pHead);
if (NULL == pHead)
{
printf("链表为空\n");
}
else
{
while (pdel != pos)
{
pdel = pdel->_pNext;
if (pdel != pos)
pback = pback->_pNext;
}
pback->_pNext = pdel->_pNext;
free(pdel);
pdel = NULL;
}
}
画图理解:





本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-104745-1.html
美国的这种行为