兩個無序單鏈表 排序後合併成乙個有序鍊錶

2021-09-30 17:13:55 字數 1168 閱讀 5716

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

兩個無序單鏈表,排序後合併成乙個有序鍊錶

演算法思想:用冒泡法,對鍊錶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...