題目:
已知兩個非降序鍊錶序列s1與s2,設計函式構造出s1與s2的交集新鍊錶s3。
輸入格式:
輸入分兩行,分別在每行給出由若干個正整數構成的非降序序列,用−1表示序列的結尾(−1不屬於這個序列)。數字用空格間隔。
輸出格式:
在一行中輸出兩個輸入序列的交集序列,數字間用空格分開,結尾不能有多餘空格;若新鍊錶為空,輸出null。
輸入樣例:
1 2 5 -1
2 4 5 8 10 -1
輸出樣例:
2 5關鍵:
1.只需建立第乙個鍊錶,第二個序列不需建立,直接比較後建立交集鍊錶!!!(是某位機智博主的想法,好讚!!)
2.記錄一下序列一的最大數,若序列二的第乙個數比它大,那就沒有比較的必要了,直接null。對執行時間有幫助。
坑點:
這道題沒有集合裡的唯一性之說,交集裡1、1就是1、1,而不是1。
最終答案:
#include
using
namespace std;
//定義鍊錶結點
struct node
;int
main()
p2->next =
null
; e1 = p2-
>data;
//e1是序列一中最後乙個數字(最大的)
//建立交集鍊錶
int d2;
cin >> d2;
if(d2 <= e1)
//如果d2>e1,沒有交集,h2直接為null
} p2-
>next =
null
;delete p1;
}//輸出交集鍊錶
p1 = h2;
if(p1 ==
null
)cout <<
"null"
;else
cout << p1-
>data;}}
/*犯錯記錄:39行開始的if-else if- else結構,
一開始用了if-if-else,然後一直出錯,兩種結構天差地別!!
*/
自用PTA題目記錄0016
以下題目序號並無實際意義 回文數是一種很有趣的數,對於乙個不是回文數的數,我們可以通過以下操作來將其變成回文數 將數反轉,加到原數上,重複這個過程,直到得到回文數為止。輸入格式 輸入1個數字不超過1000的正整數。輸出格式 對每乙個輸入,輸出將其變成回文數的過程。每一行按以下個數輸出 a b c a...
自用PTA題目記錄0026
以下題目序號並無實際意義 通過讀者和借閱表,查詢讀者資訊,包括以下字段 賬號,姓名,性別,條形碼,借書日期和還書日期 建表語句 create table 讀者 賬號 char 4 primary key,姓名 char 5 性別 char 1 等級 char 4 出生日期 date,餘額 float...
PTA題目總結
字串解碼編碼 排序pta中對鍊錶的考察不像leetcode,大部分時候的考察是通過靜態鍊錶的方式 大多數是25分的題,用時大多在25 30分鐘,準確率不錯 靜態鍊錶一般會給 address key next 作為乙個node,一般情況下數量級會小於10 5 因此可以通過乙個大陣列存放給的節點,然後通...