赞
踩
本博客内容
1、单链表的结构
2、求链表的长度
3、单链表反转
4、单链表倒数第k个节点
5、查找链表的中间节点
6、从尾到头打印链表
7、已知2个单链表有序,把它们合并为一个有序链表
8、判断一个单链表是否有环
9、判断2个链表是否相交
10、求2个单链表相交的第1个节点
struct ListNode
{
int m_nValue;
ListNode * m_pNext;
};
unsigned int GetListLength(ListNode * pHead)</font>
{
if(pHead==NULL)
return 0;
ListNode * pNode=pHead;
unsigned int length=0;
while(pNode)
{
length++;
pNode=pNode->m_pNext;
}
return length;
}
① 采用交换的方法
ListNode * ReverseList(ListNode * pHead)
{
if(!pHead||!pHead->m_pNext)
return pHead;
ListNode * pReverseHead=NULL;
ListNode * pNode=pHead;
ListNode * pPrev=NULL;
while(pNode)
{
ListNode * pNext=pNode->m_pNext;
if(!pNext)
pReverseHead=pNode;
pNode->m_pNext=pPrev;
pPrev=pNode;
pNode=pNext;
}
return pReverseHead;
②递归方法
ListNode * ReverseList(ListNode * pHead)
{
if(!pHead||!pHead->m_pNext)
return pHead;
ListNode * result=ReverseList(pHead->m_pNext);
pHead->m_pNext->m_pNext=pHead;
pHead->m_pNext=NULL;
return result;
}
③使用辅助栈空间
ListNode * ReverseList(ListNode * pHead)
{
if(!pHead||!pHead->m_pNext)
return pHead;
stack<ListNode * > stk;
ListNode * pNode=pHead;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。