zoukankan      html  css  js  c++  java
  • C 链表合并

    
    
    #include <stdio.h>
    #include <stdlib.h>
    typedef struct node{
        int data;   //占4B
        struct node *next;  //占8B
    } List;     //共占16B

    List* creatLink(int li[], int n) {
        List *L,*curNode,*nextNode;
        L = (List*)malloc(sizeof(List));
        L->next = NULL;
        curNode = L;
        int i;
        for(i=0;i<n;i++){
            nextNode = (List*)malloc(sizeof(List));
            nextNode->data = li[i];
            nextNode->next = curNode->next;
            curNode->next = nextNode;
            curNode = nextNode;
        }
        return L;
    }
    List* mergeLink2(List *L1,List *L2){
        List *L = (List*)malloc(sizeof(List));
        List *curNode = L;
        curNode->next = L1->next;
        while(curNode->next) curNode = curNode->next;
        curNode->next = L2->next;
        return L;
        

    }
    List* mergeLink(List *L1, List *L2){
        List *L = (List*)malloc(sizeof(List));
        List *curNode = L;
        List *L1t = L1,*L2t = L2;
        L1t = L1t->next;
        L2t = L2t->next;
        while(L1t && L2t){
            if(L1t->data < L2t->data){
                curNode->next = L1t;
                curNode = L1t;
                L1t = L1t->next;
            }
            else{
                curNode->next = L2t;
                curNode = L2t;
                L2t = L2t->next;
            }
        }
        if(L1t){
            curNode->next = L1t;
        }
        else
        {
            curNode->next = L2t;
        }
        return L;
    }
    void freeLink(List **Node){
        List *temp;
        while(*Node != NULL){
            temp = *Node;
            *Node = temp->next;
            free(temp);
        }
    }
    void printLink(List *Node){
        Node = Node->next;
        while(Node != NULL){
            printf("%d   ",Node->data);
            Node= Node->next;
        }
        printf(" ");
    }
    int main(){

        int li1[6] = {1,3,5,7,9,0};
        int li2[5] = {2,4,6,8,10};
        List *L1 = creatLink(li1,sizeof(li1)/sizeof(li1[0]));
        List *L2 = creatLink(li2,sizeof(li2)/sizeof(li2[0]));
        List *L = mergeLink2(L1,L2);
        printLink(L);
        freeLink(&L1);
        freeLink(&L2);
        freeLink(&L);
        return 0;
    }
     
  • 相关阅读:
    实现高效易用的java操作mysql包装
    部分NLuke版本源码更新(2009111)
    ASP.NET Forms验证的安全性问题研究——为什么加密代码需要配置为服务
    VirtualBox 虚拟机 Debian系统上安装Cassandra步骤及遇到的问题
    mysql master/slave 使用感受
    一个不必要的设计
    应对服务器端访问限制的一些办法(Cookie,Session,IP等)
    qq四国军旗2.1 beat03 builde017记牌器开发思路(一)
    MVC与WebForm最大的区别
    dell笔记本的Broadcom 802.11b/g 无线网卡ubuntu 9.10下安装
  • 原文地址:https://www.cnblogs.com/Json28/p/12875176.html
Copyright © 2011-2022 走看看