您的位置:首页 > 其它

链表题目整理

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: