Heim  >  Artikel  >  Backend-Entwicklung  >  So führen Sie zwei geordnete verknüpfte Listen in C-Sprache zusammen

So führen Sie zwei geordnete verknüpfte Listen in C-Sprache zusammen

王林
王林Original
2020-10-29 11:35:436630Durchsuche

So führen Sie zwei geordnete verknüpfte Listen in der Sprache C zusammen: Verbinden Sie einfach alle Knoten der beiden angegebenen geordneten verknüpften Listen. Beispielsweise sind die beiden geordneten verknüpften Listen [1->2->4] und [1->3->4], und die zusammengeführte geordnete verknüpfte Liste ist [1->1->2 - >3->4->4].

So führen Sie zwei geordnete verknüpfte Listen in C-Sprache zusammen

Spezifische Methode:

Zwei geordnete verknüpfte Listen zu einer neuen geordneten verknüpften Liste zusammenführen und zurückgeben. Die neue verknüpfte Liste wird durch Verketten aller Knoten der beiden angegebenen verknüpften Listen gebildet.

(Empfohlenes Video-Tutorial: Java-Kurs)

Eingabe:

1->2->4, 1->3->4

Ausgabe:

1->1->2->3->4->4

Analyse: Die beiden verknüpften Listen sind geordnete verknüpfte Listen. Durchlaufen Sie also einfach die beiden verknüpften Listen, um ihre Größe zu vergleichen.

Code-Implementierung:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
    if(l1==NULL){
        return l2;
    }
    if(l2==NULL){
        return l1;
    }
    struct ListNode *l = (struct ListNode*)malloc(sizeof(struct ListNode));
    l->next = NULL;
    struct ListNode *list1 = l1;
    struct ListNode *list2 = l2;
    if(l1->val<l2->val){
        l->val=l1->val;
        if(list1->next==NULL){
            l->next=list2;
            return l;
        }
        list1=list1->next;
    }else{
        l->val=l2->val;
        if(list2->next==NULL){
            l->next=list1;
            return l;
        }
        list2=list2->next;
    }
    struct ListNode *list = l;
    while(list1->next!=NULL&&list2->next!=NULL){
        if(list1->val<=list2->val){
            struct ListNode *body = (struct ListNode *)malloc(sizeof(struct ListNode));
            body->val = list1->val;
            body->next = NULL;
            list->next = body;
            list = list->next;
            list1 = list1->next;
        }else{
            struct ListNode *body = (struct ListNode*)malloc(sizeof(struct ListNode));
            body->val=list2->val;
            body->next=NULL;
            list->next=body;
            list=list->next;
            list2=list2->next;
        }
    }
    if(list1->next==NULL){
        while(list2->next!=NULL){
            if(list1->val<=list2->val){
                list->next = list1;
                list = list->next;
                list->next=list2;
                return l;
            }else{
                struct ListNode *body = (struct ListNode*)malloc(sizeof(struct ListNode));
                body->val=list2->val;
                body->next=NULL;
                list->next=body;
                list=list->next;
                list2=list2->next;
            }
        }
    }else{
        while(list1->next!=NULL){
            if(list2->val<=list1->val){
                list->next=list2;
                list=list->next;
                list->next=list1;
                return l;
            }else{
                struct ListNode *body = (struct ListNode*)malloc(sizeof(struct ListNode));
                body->val=list1->val;
                body->next=NULL;
                list->next=body;
                list=list->next;
                list1=list1->next;
            }
        }
    }
    if(list1->next==NULL&&list2->next==NULL){
        if(list1->val<=list2->val){
            list->next = list1;
            list=list->next;
            list->next=list2;
        }else{
            list->next=list2;
            list=list->next;
            list->next=list1;
        }
    }



    return l;
}

Teilen von Bild- und Text-Tutorials: Erste Schritte mit Java

Das obige ist der detaillierte Inhalt vonSo führen Sie zwei geordnete verknüpfte Listen in C-Sprache zusammen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn