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的頭結點將是合併後鍊錶的頭結點。然後繼續合併兩個鍊錶中的剩餘結點,兩個鍊錶中剩餘的結點依然是有序的,因此合併步驟與第一步相...