面试算法整理(三)

已知两个链表headq1和head2各自有序,请把它们合并成一个链表依然有序
一个链表的节点结构:

struct Node
{
	int data;
	Node* next;
};
typedef struct Node Node;

Node* Merge(Node* head1, Node* head2)
{
	if(head1 == NULL)
		return head2;
	if(head2 == NULL)
		return head1;
	Node* head = NULL;
	Node* p1 = NULL;
	Node* p2 = NULL;
	if(head1->data < head2->data)
	{
		head = head1;
		p1 = head1->next;
		p2 = head2;
	}
	else
	{
		head = head2;
		p2 = head2->next;
		p1 = head1;
	}
	Node* pcurrent = head;
	while(p1 != NULL && p2 != NULL)
	{
		if(p1->data <= p2->data)
		{
			pcurrent->next = p1;
			pcurrent = p1;
			p1 = p1->next;
		}
		else
		{
			pcurrent->next = p2;
			pcurrent = p2;
			p2 = p2->next;
		}
	}
	if(p1 != NULL)
		pcurrent->next = p1;
	if(p2 != NULL)
		pcurrent->next = p2;
	return head;
}

编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的

原文地址:https://www.cnblogs.com/stardujie89/p/4581726.html