合併兩個非降序鍊錶(C語言)

2021-10-25 06:37:08 字數 1122 閱讀 2100

【問題描述】

兩個非降序鍊錶的並集,例如將鍊錶1->2->3 和 2->3->5 並為 1->2->3->5,只能輸出結果,不能修改兩個鍊錶的資料。

【輸入形式】

第一行為第乙個鍊錶的各結點值,以空格分隔。

第二行為第二個鍊錶的各結點值,以空格分隔。

【輸出形式】

合併好的鍊錶,以非降序排列,值與值之間以空格分隔。

【樣例輸入】

4 7 10 34

1 4 6 29 34 34 52

【樣例輸出】

1 4 6 7 10 29 34 52

【評分標準】

要使用鍊錶實現,否則不能得分。

#include

#include

#include

#define ok 1

#define overflow -2

typedef

int elemtype;

typedef

int status;

typedef

struct lnodelnode,

*linklist;

status initlist_l

(linklist *l)

status createlist_hl

(linklist *l)

}return ok;

}status mergelist_l

(linklist l1,linklist l2,linklist *l3)

p1=p1->next;

}else

p2=p2->next;}}

if(!p1)

p2=p2->next;

} q->next=

null;}

else

p1=p1->next;

} q->next=

null;}

return ok;

}status printlist_l

(linklist l)

printf

("\n");

return ok;

}int

main()

合併兩個鍊錶

就是簡單的合併兩個鍊錶,這裡要求倆個鍊錶是有序的。比如 1 2 3 4 5 和 0 7 13 合併之後為 0 1 2 3 4 5 7 13 首先,簡單介紹一下思路,首先區遍歷倆個鍊錶,如果第乙個鍊錶的值小於等於第二個鍊錶的值,那麼將第乙個鍊錶的值插入乙個新的頭節點 鍊錶中,反之如果大於第二個鍊錶的值...

合併兩個鍊錶

1.問題描述description 將兩個公升序鍊錶合併為乙個新的公升序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 42.思路 將頭部較小的鍊錶的節點與另乙個鍊錶合併,遞迴解答。退出條件為 當乙個鍊錶為空時,返回另乙個鍊錶...

合併兩個有序鍊錶 C

合併兩個有序鍊錶 遞迴實現 演算法思想 遞迴終止條件 若head1為空,返回head2指標 head 若head2為空,返回head1指標 head 遞迴過程 1 若head1 data head2 data head 指標應該指向head2所指向的節點,而且head next應該指向head1和h...