单链表反转
来源:互联网 发布:js中gbk编码转换utf8 编辑:程序博客网 时间:2024/05/12 02:08
struct ListNode
{
int key;
ListNode* next;
};
1.使用三个指针遍历单链表,逐个链接点进行反转
ListNode* ReverseList(ListNode* head)
{
ListNode* p;
ListNode* q;
ListNode* r;
if (head == NULL || head->next == NULL)
return head;
p = head;
q = p->next;
p->next == NULL;
while (q != NULL)
{
r = q->next;
q->next = p;
p = q;
q = r;
}
return p;
}
ListNode* Reverse(ListNode* head)
{
ListNode* pNode = head;
ListNode* pPrev = NULL;
while (pNode != NULL)
{
ListNode* pNext = pNode->next;
if (pNext == NULL)
{
return pNode;
}
pNode->next = pPrev;
pPrev = pNode;
pNode = pNext;
}
}
2.从第2个节点到第N个节点,依次逐节点插入到第1个节点(head节点)之后,最后将第一个节点挪到新表的表尾。
ListNode* ReverseList(ListNode* head)
{
ListNode* pNode;
ListNode* pNext;
if (head==NULL || head->next==NULL)
return head;
pNode = head->next;
pNext = pNode->next;
while (pNext != NULL)
{
pNode->next = pNext->next;
pNext->next = head->next;
head->next = pNext;
pNext = pNode->next;
}
pNode->next = head;
pNext = head->next;
head->next = NULL;
return pNext;
}
- 单链表反转
- 单链表反转
- 单链表反转
- 反转单链表
- 单链表反转
- 反转单链表
- 单链表-反转
- 单链表反转
- 单链表反转
- 单链表反转
- 单链表反转
- 单链表反转
- 单链表反转
- 单链表反转
- 单链表反转
- 单链表反转
- 反转单链表
- 单链表反转
- Installing VirtualBox on a PAE Kernel System
- 用VMtool Share功能编译内核导致失败的问题
- 有限差分
- Ubuntu Rhythmbox 乱码问题
- 消息对话框
- 单链表反转
- Hessian特征检测
- 获取界面上的编辑框的文本值
- 图的应用--二部图的判定及利用匈牙利算法求二部图的最大匹配
- 直方圖均衡化
- 霍夫變換
- arm7 力天电子lpc2148 PLL实验(二)之 PLL重新设定实验参考程序
- 注册表详细讲解
- ADO 方式访问 Excel 文件的问题