劍指offer 合併兩個排序的鍊錶

2021-08-19 16:22:23 字數 2203 閱讀 8693

q:輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。

/*

struct listnode

};*/

class solution

if(phead1 != null && phead2 == null)

if(phead1 == null && phead2 != null)

// listnode* tmp = new listnode(0);

listnode* p1 = phead1;

listnode* q1 = phead1;

listnode* p2 = phead2;

listnode* q2 = phead2;

if(phead1->val <= phead2->val)

return phead1;

}else

return phead2;}}

};

#include#include #include #include using namespace std;

typedef struct listnodelistnode;

//列印鍊錶

void output(listnode*head)

else

else

p = p->next;}}

}//建立鍊錶

listnode* createlist(listnode *head,int n)

return head;

}listnode* merge(listnode*head1,listnode*head2)

//只有第乙個字串,無需合併,直接輸出

else if(head2->next == null)

//只有第二個字串,無需合併,直接輸出

else if(head1->next == null)

//合併

else

else

p3 = p3->next;

}//head1沒有遍歷完

while(p1 != null)

//head2沒有遍歷完

while(p2 != null)

return head;

}}int main()

if(m != 0)

//合併排序

head1 = merge(head1,head2);

//列印鍊錶

//列印鍊錶

void output(listnode*head)

else

else

p = p->next;}}

}//建立鍊錶

listnode* createlist(listnode *head,int n)

return head;

}//遞迴

listnode* merge(listnode*head1,listnode*head2)

else if(head2 == null)

else if(head1 == null)

//合併

listnode *head = null;

if(head1->value < head2->value)

else

return head;

}int main()

if(m != 0)

//合併排序

head1 = merge(head1->next,head2->next);

//列印鍊錶

if(head1 == null)

else

}//while

return 0;

}

劍指Offer 合併兩個排序鍊錶

題目 輸入兩個遞增排序的鍊錶,合併兩個鍊錶並使新鍊錶依然是有序的 鍊錶定義如下 typedef struct listnode linklist 例子如下 首先考慮輸入特殊情況。我們假設輸入鍊錶如果不為空的話必然有序,也就是說不用判斷其有序性。當輸入鍊錶都為空指標,此時返回的鍊錶也需要為空指標。如果...

《劍指offer》 合併兩個排序鍊錶

題目描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。說明 本題目包含複雜資料結構listnode,點此檢視相關資訊 struct listnode class solution else if phead2 nullptr listnode head...

劍指Offer 合併兩個排序鍊錶

問題描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。思路 首先比較兩個鍊錶的頭結點,如果鍊錶1的頭結點小於鍊錶2的頭結點,鍊錶1的頭結點將是合併後鍊錶的頭結點。然後繼續合併兩個鍊錶中的剩餘結點,兩個鍊錶中剩餘的結點依然是有序的,因此合併步驟與第一步相...