链表相邻元素翻转
2013-02-25 15:35
531 查看
a->b->c->d->e->f->g,翻转后变为:b->a->d->c->f->e->g
struct ListNode
{
int m_nValue;
ListNode * m_pNext;
};
void ExchangeAdjacentNodes(ListNode* pHead)
{
if (pHead == NULL || pHead->m_pNext == NULL)
return;
ListNode* p1 = pHead;
ListNode* p2 = pHead->m_pNext;
pHead = p2;
p1->m_pNext = p2->m_pNext;
p2->m_pNext = p1;
ListNode* pre = p1;
while (pre->m_pNext != NULL && pre->m_pNext->m_pNext != NULL)
{
p1 = pre->m_pNext;
p2 = pre->m_pNext->m_pNext;
pre->m_pNext = p2;
p1->m_pNext = p2->m_pNext;
p2->m_pNext = p1;
pre = p1;
}
}
struct ListNode
{
int m_nValue;
ListNode * m_pNext;
};
void ExchangeAdjacentNodes(ListNode* pHead)
{
if (pHead == NULL || pHead->m_pNext == NULL)
return;
ListNode* p1 = pHead;
ListNode* p2 = pHead->m_pNext;
pHead = p2;
p1->m_pNext = p2->m_pNext;
p2->m_pNext = p1;
ListNode* pre = p1;
while (pre->m_pNext != NULL && pre->m_pNext->m_pNext != NULL)
{
p1 = pre->m_pNext;
p2 = pre->m_pNext->m_pNext;
pre->m_pNext = p2;
p1->m_pNext = p2->m_pNext;
p2->m_pNext = p1;
pre = p1;
}
}
相关文章推荐
- 链表相邻元素翻转
- 链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g
- 链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g
- 链表相邻元素翻转
- 链表相邻元素翻转
- 链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g
- 链表相邻元素翻转,如1->2->3->4->5->6-7,翻转后变为:2->1->4->3->6->5->7。
- 链表相邻元素翻转
- 链表相邻元素翻转
- 链表相邻元素翻转
- 链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g
- 算法 链表相邻元素翻转
- 链表的相邻元素的翻转
- C++循环链表中进行元素的翻转
- 每K个元素翻转一次链表,若最后剩余元素不足K个,不进行翻转(美团2014校招试题)
- Leetcode016--链表相邻元素进行交换
- leetcode+交换链表相邻元素,head指向一个元素,只需要交换相邻元素,链表结构不变
- C++循环链表中进行元素的翻转
- 只调整指针来交换两个相邻的元素【双链表】
- C++循环链表中进行元素的翻转