已知兩個非降序鍊錶序列s1與s2,設計函式構造出s1與s2合併後的新的非降序鍊錶s3。
輸入格式:
輸入分兩行,分別在每行給出由若干個正整數構成的非降序序列,用−1表示序列的結尾(−1不屬於這個序列)。數字用空格間隔。
輸出格式:
在一行中輸出合併後新的非降序鍊錶,數字間用空格分開,結尾不能有多餘空格;若新鍊錶為空,輸出null。
輸入樣例:
1 3 5 -1
2 4 6 8 10 -1
輸出樣例:
1 2 3 4 5 6 8 10
思路:用乙個指標t1指向第乙個鍊錶的頭節點,另乙個指標t2指向另乙個鍊錶的頭節點,構造乙個空鍊錶,指標t3指向煉表頭。對指標的t1所指向的節點的元素與指向t2的節點元素進行比較,若t1所指向的節點元素小,則t3指向t1,t1後移一位,t3後移一位;同理,若t2所指向的節點元素小,則t3指向t2,t2後移一位,t3後移一位。當其中乙個指標指向空節點時,而另乙個指標指向的節點還有元素則t3指向另乙個指標即可
#include
using
namespace std;
typedef
struct lnode * list;
struct lnode
;list readlist()
;list merge
(list l1, list l2)
;void
printlist
(list l)
;int
main()
list readlist()
l = head-
>next;
free
(head)
;return l;
}list merge
(list l1, list l2)
else}if
(t1)
if(t2)
l = head-
>next;
free
(head)
;//釋放頭節點
return l;
}void
printlist
(list l)
else
}}
浙大PTA兩個有序鍊錶序列的合併
思路 用乙個指標p1指向第乙個鍊錶,用乙個指標p2指向第二個鍊錶,比較倆個指標指向節點的值,哪個小把那個放進去,指標後移一位,當某個指標指向的鍊錶為空,則另乙個鍊錶剩餘部分直接連上即可 include using namespace std typedef struct lnode list str...
浙大PTA兩個有序鍊錶序列的交集
思路 乙個指標指向第乙個鍊錶,乙個指標指向第二個鍊錶,若倆個指標指向的節點的值相等,則用l指向這個節點,並且倆個指標都後移 否則指向節點值小的指標後移 include using namespace std typedef struct lnode list struct lnode list re...
有序鍊錶合併
歸併排序 la lb是兩個帶頭結點的有序鍊錶,歸併兩個鍊錶得到新的有序表lc。設立指標pa,pb,pc,其中pa和pb分別指向la,lb中當前待比較的結點,pc指向lc表中當前最後乙個結點。將pa,pb結點中值較小的乙個鏈結到pc之後。typedef struct node node,plink 銷...