struct ListNode* FindKthTotail(struct ListNide* pListHead,int k){
struct ListNode* slow,*fast;
slow=fast=pListHead;
while(k--)
{
//fast还没有走出k步,列表没有k步长
if(fast==NULL)
return NULL;
fast=fast->next;
}//fast先走k步
while(fast)
{
slow=slow->next;
fast=fast->next;
}
return slow;
}
将两个升序链表合并成一个新的升序链表并返回。
归并:从头比较,取小的尾插到新链表
struct ListNode* mergeTwoLists(struct ListNode* list1,struct ListNode* list2){
struct ListNode* head,*tail;
head=tail=NULL;
while(list1&&list2)
{
if(list1->val<list2->val)
{
if(tail==NULL)
{
head=tail=list1;
}
else
{
tail->next=list1;
tail=tail->next;
}
list2=list2->next;
}
}
if(list1)
tail->next=list1;
if(list2)
tsil->next=list2;
return head;
}