分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!
兩個無序單鏈表,排序後合併成乙個有序鍊錶
演算法思想:用冒泡法,對鍊錶1和2進行排序,對排序後的兩個鍊錶,從小到大進行迴圈,裝入鍊錶3中。
#include
#include
struct
stud/*定義鍊錶*/;void
pai_xue
(struct stud *head1,struct stud *head2,int count1,int count2)
/*氣泡排序法*/
} for(i=0;i-1;++i) for(p=head2->next;p->next!=null;p=p->next)/*對鍊錶2進行排序*/ } printf("\n鍊錶1排完序後\n");/*輸出鍊錶1和2*/ p=head1->next; while(p) printf("\n"); printf("\n鍊錶2排完序後\n"); p=head2->next; while(p) printf("\n"); }void
main
()printf("現在開始給第二個鍊錶輸入資料\n");printf("輸入乙個資料以999結束\n");scanf("%d",&q->data);while(q->data!=999)/*鍊錶2輸入資料*/pai_xue(head1,head2,count1,count2);head1=head1->next;head2=head2->next;while(head1!=null&&head2!=null)/*將排序好的鍊錶1和2 的資料匯入鍊錶3*/ else }if(head1!=null)/*如果有鍊錶1或2的資料不為空,將剩下的資料匯入鍊錶3中*/ }if(head2!=null)}q=head3->next;/*將鍊錶倒置,原來是由大到小,倒置成由小到大*/head3->next=null;while(q!=null)printf("兩個鍊錶合併後由小到大為\n");p=head3->next;while(p)}
給我老師的人工智慧教程打call!
將兩個單鏈表合併成乙個有序單鏈表
3.10 4.將兩個單鏈表合併成乙個有序單鏈表 由於以前初學c 時所寫的 不堪入目,不符合規範性,完整性和魯棒性,於是今日重寫其核心演算法以警示自己。node merge node p1head,node p2head else return pmergedhead 思路 因為鍊錶可以由結點輕鬆構造...
合併兩個排序的單鏈表
題目 輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然是依照遞增排序的。分析 合併單鏈表,須要找到頭結點,對照兩個煉表頭結點後,確定頭結點,再確定頭結點下乙個結點,迴圈遞迴的如前面一樣操作確定每乙個結點位置,同一時候考慮邊界條件,假設兩個鍊錶為空。則肯定無需合併了,就是空鍊錶,假設乙個鍊...
合併兩個有序單鏈表
include using namespace std typedef struct nodenode,linklist void creatlist linklist l void insert int n,node p void show linklist l cout num head2 ne...