您的位置:首页 > 职场人生

【单链表面试题】--------链表的逆置

2017-12-29 16:41 134 查看

逆置单链表

两种方法

1)利用头插法,和前面讲述的从尾到头是一个道理,不在做详细研究

2)三个指针翻转(具体过程如下图)



代码:

/*三个指针*/
SListNode* ReverseList(SListNode* pHead)
{
SListNode* n1, *n2, *n3;
if (pHead == NULL || pHead->_next == NULL)
{
return pHead;
}
n1 = pHead;
n2 = n1->_next;
n3 = n2->_next;

n1->_next = NULL;
while (n2!=NULL)
{
n2->_next = n1;

n1 = n2;
n2 = n3;

if (n3 != NULL)
n3 = n3->_next;
}
return n1;

}


//头插
SListNode* ReverseList1(SListNode* pHead)
{
if (pHead == NULL || pHead->_next == NULL)
{
return pHead;
}

SListNode* NewList = NULL;
SListNode* cur = pHead;
while (cur)
{
SListPushFront(&NewList, cur->_data);
cur = cur->_next;
}
return NewList;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  单链表 面试题 链表