链表题目整理
2017-10-29 16:56
162 查看
链表逆序:
void Reverse(Node *head)
{
if (head == NULL)
return;
Node *pre, *cur, *nex;
pre = head;
cur = head->next;
while (cur)
{
nex = cur->next;
cur->next = pre;
pre = cur;
cur = nex;
}
head->next = NULL;
head = pre;
}
链表归并:
Node *Merge(Node *head1, Node *head2)
{
if (head1 == NULL)
return head2;
if (head2 == NULL)
return head1;
Node *head, *p1, *p2;
if (head1->data < p2->data)
{
head = head1;
p1 = head1->next;
p2 = head2;
}
else
{
head = head2;
p1 = head1;
p2 = head2->next;
}
Node *cur = head;
while (p1 != NULL && p2 != NULL)
{
if (p1->data <= p2->data)
{
cur->next = p1;
cur = p1;
p1 = p1->next;
}
else
{
cur->next = p2;
cur = p2;
p2 = p2->next;
}
}
if (p1 == NULL)
cur->next = p2;
if (p2 == NULL)
cur->next = p1;
return head;
}
void Reverse(Node *head)
{
if (head == NULL)
return;
Node *pre, *cur, *nex;
pre = head;
cur = head->next;
while (cur)
{
nex = cur->next;
cur->next = pre;
pre = cur;
cur = nex;
}
head->next = NULL;
head = pre;
}
链表归并:
Node *Merge(Node *head1, Node *head2)
{
if (head1 == NULL)
return head2;
if (head2 == NULL)
return head1;
Node *head, *p1, *p2;
if (head1->data < p2->data)
{
head = head1;
p1 = head1->next;
p2 = head2;
}
else
{
head = head2;
p1 = head1;
p2 = head2->next;
}
Node *cur = head;
while (p1 != NULL && p2 != NULL)
{
if (p1->data <= p2->data)
{
cur->next = p1;
cur = p1;
p1 = p1->next;
}
else
{
cur->next = p2;
cur = p2;
p2 = p2->next;
}
}
if (p1 == NULL)
cur->next = p2;
if (p2 == NULL)
cur->next = p1;
return head;
}
相关文章推荐
- 写的很好 链表的各种题目整理(C语言实现)
- 链表的各种题目整理(C语言实现)
- 链表题目整理(C语言实现)
- 链表题目整理(持续更新)
- 链表的各种题目整理(C语言实现)
- 链表的各种题目整理
- 题目:①判断一个单向链表是否有环,如果有环则找到环的入口节点。 ②判断两个单向链表是否相交,如果相交则找到交点节点。
- 一道单向链表的题目..
- 逻辑题目整理
- 对于有关东方的题目的整理。。
- 【题目】从链表中点反转链表
- 链表 --整理小结
- 左程云著算法与数据结构题目最优解笔记-删除无序链表中重复的元素
- hackerrank 和 leetcode的链表相关的题目的总结
- 剑指Offers 题目1511:从尾到头打印链表
- 九度题库(所有题目整理,适合计算机考研和面试的人用)
- Leet 题目整理归类 - 快速通道 (持续更新)
- POJ 题目整理
- 一些笔试题目和整理的答案 - 腾讯(Tencent)
- 题目:复制带随机指针的链表