用C語言合併兩個按遞增排序的鍊錶

2021-04-12 20:06:54 字數 956 閱讀 1565

最近通過對資料結構的學習,對鍊錶有了更深的認識.在單向鍊錶中,關鍵是確定下一結點的指標.現在通過一題目詳細說明(在vc6.0,winxp pro sp2上除錯通過)

題目要求:建立兩個存放整數的鍊錶,按遞增的順序輸入資料.將兩個鍊錶合併成乙個鍊錶,新煉表上中的資料仍然按照遞增排序. 

程式如下:

#include

#include

typedef struct intnumber

intnum;

intnum *creat(int num)/*建立鍊錶*/

p1 ->next = null;

return head;

}void input(intnum *head)/*輸入鍊錶資料*/

scanf("%d",&(p ->n));

}void output(intnum *head)/*輸出鍊錶資料*/

printf("%d/n",p ->n);

}void main(void)

else

}pc ->next = pa ? pa : pb;

printf("列印合併後鍊錶結點上的資料:/n");

output(headc);  

}結果如下:

請輸入建立a鍊錶的結點數:3

請按遞增輸入a鍊錶結點上的資料:1 20 30

列印a鍊錶結點上的資料:

1       20      30

請輸入建立b鍊錶的結點數:5

請按遞增輸入b鍊錶結點上的資料:2 18 22 26 32

列印b鍊錶結點上的資料:

2       18      22      26      32

將鍊錶a和鍊錶b仍然按照遞增關係合併成乙個新的鍊錶c:列印合併後鍊錶結點上的資料:

1       2       18      20      22      26      30      32

合併兩個排序鍊錶

struct listnode class solution else while pstart1 null pstart2 null plast next pstart1 plast pend1 pend1 pend1 next pstart1 pend1 else plast next psta...

合併兩個排序鍊錶

描述 將兩個排序鍊錶合併為乙個新的排序鍊錶樣例 給出1 3 8 11 15 null,2 null,返回1 2 3 8 11 15 null。解題思路 將兩個鍊錶當中的對應元素的值進行比較,重新確定新鍊錶當中元素的位置。若第乙個鍊錶當前位置的值小於第二個鍊錶當前值,則不需要改變位置,第乙個鍊錶的指標...

合併兩個排序鍊錶

問題描述 將兩個排序鍊錶合併為乙個新的排序鍊錶 樣例 給出1 3 8 11 15 null,2 null,返回1 2 3 8 11 15 null。解題思路 遍歷第二個鍊錶的每乙個節點,然後與第乙個節點的第乙個節點比較,如果第二個鍊錶節點的值小於第乙個,就插入到第乙個煉表裡,如果大於就到下乙個節點。...