码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode第21题-Merge Two Sorted Lists

时间:2015-04-16 17:36:38      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:

本题目是意思是把两个有序的链表合成一个有序的链表,考察了归并算法和链表的操作。

代码也相对比较简单,简单说一下归并函数里三个指针的作用,sum是返回的第一个指针,cur是所要返回的链表里走到的位置,put是对于取到的l1或l2里的某一个指针节点。全部的可运行代码如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

struct ListNode{
	int value;
	ListNode *next;
};

ListNode *mergeTwoList(ListNode *l1,ListNode *l2)
{
	ListNode *sum;
	ListNode *cur;
	ListNode *put;
	sum=NULL;//will be returned
	if((l1==NULL)||(l2==NULL))
		return l1?l1:l2;
	while(l1&&l2)
	{
		if(l1->value<l2->value)
		{
			put=l1;
			l1=l1->next;
		}
		else
		{
			put=l2;
			l2=l2->next;
		}
		if(sum==NULL)
		{
			sum=put;
			cur=sum;
		}
		else
		{
			cur->next=put;
			cur=cur->next;
		}
	}
	if(l1)
		cur->next=l1;
	if(l2)
		cur->next=l2;
	return sum;
}

int main()
{
	int n,m;
	printf("Please input the first list number:");
	while(scanf("%d",&m)!=EOF)
	{
		ListNode *h1=(ListNode*)malloc(sizeof(ListNode));
		ListNode *p1=h1;
		p1->next=NULL;
		printf("Please input the first list:\n");
		int tmp,i;
		scanf("%d",&tmp);
		p1->value=tmp;
		for(i=0;i<m-1;i++)
		{
			scanf("%d",&tmp);
			ListNode *q1=(ListNode*)malloc(sizeof(ListNode));
			q1->value=tmp;
			p1->next=q1;
			p1=q1;
			p1->next=NULL;
		}	
		printf("Please input the second list number:");
		scanf("%d",&n);
		printf("Please input the second list:\n");
		ListNode *h2=(ListNode*)malloc(sizeof(ListNode));
		ListNode *p2=h2;
		p2->next=NULL;
		scanf("%d",&tmp);
		p2->value=tmp;
		for(i=0;i<n-1;i++)
		{
			scanf("%d",&tmp);
			ListNode *q2=(ListNode*)malloc(sizeof(ListNode));
			q2->value=tmp;
			p2->next=q2;
			p2=q2;
			p2->next=NULL;
		}
		printf("After Merge:");
		ListNode *list=mergeTwoList(h1,h2);
		ListNode *p=list;
		while(p)
		{
			printf("%d ",p->value);
			p=p->next;
		}
		free(h1);
		free(h2);
		printf("\n");
		printf("Please input the first list number:");
	}
	return 0;
}

leetcode第21题-Merge Two Sorted Lists

标签:

原文地址:http://blog.csdn.net/zyh920521/article/details/45077827

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!