時間限制:1 sec
記憶體限制:32 mb
提交:1583
解決:335
lc=(2,3,6,6,8,8,9,11,11,15,20)
演算法描述如下:
從上述問題要求可知,lc中的資料元素或是la中的資料元素,或是lb中的資料元素,則只要先設lc為空表,然後將la或lb中的元素逐個插入到lc中即可。為使lc中元素按值非遞減有序排列,可設兩個指標 i 和 j 分別指向la和lb中某個元素,若設 i 當前所指的元素為 a,j 所指的元素為 b,則當前應插入到 lc 中的元素 c 為 c = a < b ? a : b顯然,指標 i 和 j 的初值均為1(實際寫**時往往是從 0 開始的),在所指元素插入 lc 之後,在 la 或者 lb 中順序後移。上述歸併演算法如下圖:
圖:有序列表有序插入演算法 a
,第乙個整數m(
0<=m<=100
)代表集合
a起始有
m個元素,後面有
m個非遞減排序的整數,代表
a中的元素。第二行是集合
b,第乙個整數
n(0<=n<=100)
代表集合
b起始有
n個元素,後面有
n個非遞減排序的整數,代表
b中的元素。每行中整數之間用乙個空格隔開。
m+n個來自集合
a和集合
b 中的元素。結果依舊是非遞減的。每個整數間用乙個空格隔開。
本題書中提供的演算法是基於順序表的。在使用順序表時需要兩倍於資料元素數目。如果使用鍊錶則只需要儲存一倍的元素。然而使用鍊錶同樣需要儲存一倍的指標。所以對於這類問題資料結構的選取,如果資料域占用的空間很大則可以使用鍊錶儲存來節省空間,而對於資料域占用不大的情況,則使用順序表也可以。
程式提交後提示格式錯誤(未解決)
格式錯誤的一般原因有:
1.格式問題要注意 每行最後要有回車,並且行末不能有多餘的空格。
格式錯誤,請仔細檢查case末的空行、case間的空行、每一行後的空格,等這些地方,看與題目描述是否一致。
2.答案正確,但格式不對。 可能是多輸出了space/tab/return
有人也說只有三種情況:
1空行問題
2大小寫問題
3空格問題
資料結構高分筆記
有序線性表的有序合併
對於這個問題其實想法很簡單,已經已知線性表是有序的,那麼我們只需要比較值的大小放入另外乙個陣列中或者直接輸出 要考慮的是兩個輸入序列的邊界問題。這個問題在 中注釋,也是常用的迴圈兩個線性表的方法。已知線性表 la 和 lb 中的資料元素按值非遞減有序排列,現要求將 la 和 lb 歸併為乙個新的線性...
2 2 線性表的單鏈表
ps 1 p l的結點都是指標型別 2 頭結點插入與輸出的順序相反 3 注意左值與右值的區別 p next q next q next是指到的下乙個結點,非指標本身 p next是指標本身 即p的指標域 與左值右值有關 4 後移用p p next 不用 p 因為位址不連續 p next 表示指標變數...
2 2線性表的順序儲存
線性表的順序儲存指的是將線性表的資料元素按其邏輯次序依次存入一組位址連續的儲存單元裡,用這種方法儲存的線性表稱為順序表。順序儲存結構的特點 元素在表中的相鄰關係,在計算機記憶體中存在著相鄰關係。線性表的第乙個元素a1的儲存位置通常稱為基位址。只要知道基位址和每個元素占用的單元數 元素的大小 就可求出...