これは私が解決しようとした宿題の質問です.
動的集合演算 UNION は、2 つの互いに素な集合 S1 と S2 を入力として受け取り、S1 と S2 のすべての要素からなる集合 S = S1 U S2 を返します。集合S1およびS2は、通常、操作によって破壊される。適切なリスト データ構造を使用して O(1) 時間で UNION をサポートする方法を示します
一定時間で実行できる 2 つのリンクされたリストを作成することを考えていますが、そのためには、リストの最初 (先頭) と最後 (末尾) の両方の要素へのポインターを覚えておく必要があります。struct node{ char* word; 構造体ノード* 次; } struct Set{ struct node* head; } struct node* テール; ヘッド ポインターの横にあるすべてのリストについて、テール ポインターも保持します。O(1) 時間でユニオン演算をサポート: 2 つのセット S1 と S2 があるとします。
PSEUDO-CODE:
node* Union(Set S1,Set S2){
S1.tail->next = S2.head;
S1.tail = S2.tail;
Remove S2 from the list of sets;
return S1;
}
私のアプローチは正しい方向に向かっていますか?