有序链表的合并--一个算法分享

来源:互联网 发布:南阳知行学校 编辑:程序博客网 时间:2024/05/18 01:20

算法中类的实现请见:http://my.oschina.net/u/181847/blog/42593

//有序链表合并
//方案如下:每次去除listSecond中的第一个节点,把这个节点插入到
//listFirst中相应的位置 ,当插入完毕后删除这个节点,然后进行下一轮
//插值,如此循环,知道listSecond为空
//创建两个链表并初始化
List<int>listFirst;
List<int>listSecond;
listFirst.AddTail(1);
listFirst.AddTail(3);
listFirst.AddTail(5);
listFirst.AddTail(8);
listFirst.AddTail(10);
listSecond.AddTail(0);
listSecond.AddTail(3);
listSecond.AddTail(4);
listSecond.AddTail(6);
listSecond.AddTail(11);
listSecond.AddTail(18);


while(listSecond.GetCount()!=0){
 int indexFirst=0;
 while(listSecond.GetAt(0)>listFirst.GetAt(indexFirst)){
      ++indexFirst;
      if(indexFirst==listFirst.GetCount()){
           break;
           }          
           }       
        if(indexFirst==listFirst.GetCount()){
         listFirst.AddTail(listSecond.GetAt(0));
         listSecond.RemoveAt(0);        
        }
        else{
           listFirst.InsertAt(indexFirst,listSecond.GetAt(0));
           listSecond.RemoveAt(0);
           }
      }

 

 

原创粉丝点击