基於鍊錶的兩個集合的交集

2021-10-02 22:01:23 字數 1054 閱讀 9116

描述

給定兩個遞增的整數集合a和b,分別用鍊錶表示集合a和b,求出a和b的交集,並存放在a中。要求空間複雜度為o(1)。

輸入多組資料,每組資料有三行,第一行為序列a和b的長度n和m,第二行為序列a的n個元素,第三行為序列b的m個元素(元素之間用空格分隔)。n=0且m=0時輸入結束。

輸出對於每組資料輸出一行,為a和b的交集,每個資料之間用空格分隔。

輸入樣例 1 

5 5

1 3 5 7 9

1 2 3 4 5

3 41 2 5

2 4 5 6

0 0

輸出樣例 1

1 3 5

2 5

#include using namespace std;

typedef struct lnodelnode,*linklist;

void initlist(linklist &l)

void createlist_r(linklist &l,int n)

return;

}void show(linklist &l)

coutnext;

while(pa&&pb)

//這一塊可以不要

//後移操作:

pa=pa->next;

pb=pb->next;

} else if(pa->data > pb->data) pb=pb->next;

else if(pa->data < pb->data) pa=pa->next;

}//cout//賦值,使a截斷

pc->next=null;//key

delete b;

return;

}void interaction(linklist &a,linklist &b,linklist &c)

} }pc->next=null;

delete b;

c=a;

return;

}int main()

return 0;

}

兩個鍊錶交集

題目給定兩個鍊錶,兩個鍊錶有一部分是一樣,求給出兩個鍊錶交集開始的地方。方法1步驟1 求先求出兩個鍊錶的長度差,然後讓 步驟2,長度較長的鍊錶,向後移動長度差。使得兩個鍊錶後續遍歷長度相同,步驟3 最後移動兩個指標,一次對比資料,def getintersectionnode heada,headb...

計算兩個集合的交集

include include include define number1 7 define number2 5 void createcollect int int void display int int int main printf 集合1 display collection1,numb...

兩個有序鍊錶序列的交集

已知兩個非降序鍊錶序列s1與s2,設計函式構造出s1與s2的交集新鍊錶s3。輸入分兩行,分別在每行給出由若干個正整數構成的非降序序列,用 1 表示序列的結尾 1 不屬於這個序列 數字用空格間隔。在一行中輸出兩個輸入序列的交集序列,數字間用空格分開,結尾不能有多餘空格 若新鍊錶為空,輸出null。1 ...