Heim > Backend-Entwicklung > C#.Net-Tutorial > 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

王林
Freigeben: 2020-11-03 09:57:56
Original
6758 Leute haben es durchsucht

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
Nach dem Login kopieren

Ausgabe:

1->1->2->3->4->4
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage