浙大PTA有序鍊錶的合併

2021-10-05 03:53:40 字數 1206 閱讀 1658

已知兩個非降序鍊錶序列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 銷...