站長資訊網
        最全最豐富的資訊網站

        C語言怎么合并兩個有序鏈表

        C語言合并兩個有序鏈表的方法:拼接指定的兩個有序鏈表的所有節點即可。例如兩個有序鏈表分別為【1->2->4】和【1->3->4】,合并后的有序鏈表為【1->1->2->3->4->4】。

        C語言怎么合并兩個有序鏈表

        具體方法:

        將兩個有序鏈表合并為一個新的有序鏈表并返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。

        (視頻教程推薦:java課程)

        輸入:

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

        輸出:

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

        分析:兩個鏈表為有序鏈表,所以依次遍歷兩個鏈表比較大小即可。

        代碼實現:

        /**  * 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; }

        圖文教程分享:java入門

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产精品无码素人福利不卡| 久久精品成人一区二区三区| 国产精品最新国产精品第十页| 国精品午夜福利视频不卡麻豆| 欧美国产精品va在线观看| 97久久精品午夜一区二区| 日韩精品国产另类专区| 欧美人与性动交α欧美精品| 影视网欧洲精品| 成人国产精品免费视频| 亚洲精品国产av成拍色拍| 久久久久国产精品麻豆AR影院| 在线精品视频播放| 精品亚洲综合久久中文字幕| 国产精品一区二区久久国产| 无码人妻精品一区二区三区夜夜嗨 | 国产成人久久久精品二区三区| 国产精品熟女高潮视频| 亚洲高清国产AV拍精品青青草原 | 精品久久久久中文字| 9re热国产这里只有精品| 欧美精品在线一区二区三区| www.亚洲精品| 91精品国产综合久久婷婷| 精品日韩亚洲AV无码一区二区三区| 亚洲精品线路一在线观看| 亚洲第一永久AV网站久久精品男人的天堂AV | 久久成人精品视频| 国产成人精品免费视频大| 99精品久久久久中文字幕| 国产成人A人亚洲精品无码| 国产欧美日韩综合精品一区二区| 久久国产热精品波多野结衣AV| 亚洲av日韩av天堂影片精品 | 一本精品中文字幕在线| 亚洲AV成人精品日韩一区18p| 蜜臀精品无码AV在线播放| 午夜精品久久久久9999高清| 最新精品国偷自产在线| 亚洲精品乱码久久久久久按摩 | 中文无码久久精品|