合并两个有序链表合并之后还是有序的,首先这两个链表是需要是有序的,也就是说这两个链表已经排好序了,才能进行合并。但是昨天也写过冒泡排序的程序了,如果让你合并两个不是有序的链表合并之后有序,那可以先将两个链表进行冒泡排序再进行合并就可以了。
首先明确思路,合并两个链表有两种方式,第一种就是创建一个新的链表,不断的将原来两个链表的数据接入新的链表,但是还有另外一种方式就是在原来两个链表上进行操作,将其中一个链表的数据不断的和另一个链表的数据进行比较,如果第一个链表的数据比第二个大的话那就将第二个链表的数据放在第一个链表当前数据的前边,今天我所写的代码是第一种的方式,第一种相对来说容易理解,并且容易操作。
SListNode* SListMerge(SListNode* list1, SListNode* list2)
{
SListNode *New=BuySListNode(0);
SListNode*head=New;
while (list1&&list2 )
{
if ((list1->_data) < (list2->_data))
{
SListPushBack(&New,list1->_data );
list1 = list1->_next;
}
else
{
SListPushBack(&New, list2->_data);
list2 = list2->_next;
}
}
if (list1 == NULL)
{
while (list2)
{
SListPushBack(&New, list2->_data);
list2 = list2->_next;