//任務管理器關閉後台執行的程式以免出現錯誤
/*問題描述:利用鍊錶儲存結構實現非遞減有序表的合併
[分析]鍊錶不需要額外開闢儲存空間,可以直接利用原鍊錶空間
建立兩表元素之間新的鏈結即可
*/
#include
#include
//流#include
#include
//包含exit標頭檔案
#include
#include
#define ok 1
#define error 0
typedef
int status;
typedef
struct lnode
lnode,
*linklist;
status create_l
(linklist &l)
status mergelist_l
(linklist &la,linklist &lb,linklist &lc)
else
}pc->next=pa?pa:pb;
//妙啊
delete lb;
//釋放lb的頭結點
return pc->data;
}//老規矩,測試用
void
makelist
(linklist &l)
}while
(cin.
good()
);p->next=
null;}
void
showlist
(linklist l)
}void
main()
//# 利用有序表的鍊錶儲存結構合併兩張表 #
/後話,因為不想被固定數值控制鍊錶結點個數所以想用
輸入端接受到任意字元型時結束do-while迴圈
這期間遭遇了很多挫折,不過初步接觸了輸入流的成員函式還算有點收穫
cin.good()若輸入型別不符合則輸入失敗,返回錯誤標記0
cin.clear()清除標記但是緩衝區仍然保留錯誤資料會阻礙進一步輸入
cin.ignore()則是將緩衝區錯誤資料彈出/
基於順序表的非遞減有序表的合併
程式設計實現順序表下教材第二章定義的線性表的基本操作,並根據已經實現的基本操作,實現兩個非遞減有序的線性表的合併,注意,合併時,如果有重複的元素,請保留乙個。a 求前驅是指,輸入乙個元素值 而不是位置 求該元素在順序表中的直接前驅元素值。求後繼是指 輸入乙個元素值 而不是位置 求該元素在順序表中的直...
合併兩個非遞減有序的單迴圈鍊錶
合併兩個非遞減有序的單迴圈鍊錶 本題要求實現乙個合併函式,實現對有序單迴圈鍊錶tail1和tail2的合併,要求合併時實現去重操作,即合併後的鍊錶中沒有重複的元素,並且合併後的鍊錶為遞增有序鍊錶。函式介面定義 pnode mergendeduplicatelist pnode tail1,pnode...
非遞減有序集合合併
描述 巳知線性表la和線性表lb中的資料元素按值非遞減有序排列,現要求將la和lb歸併為乙個新的線性表lc,且lc中的元素仍按值非遞減有序排列。輸入 三行,第一行a,b集合的個數n,m 第二行 集合a的資料 第三行 集合b的資料。輸出 二行,第一行,集合c的個數k 第二行 集合c的資料。用鍊錶怎麼進...