Muodosta kahden joukon unioni
Takaisin JHAVEPOP harjoituksiin
Joukon esittäminen linkitetyn listan avulla
Tässä harjoituksessa jokainen käsiteltävä joukko on talletettu
linkitettyä listaa käyttäen. Joukko tarkoittaa ryhmää alkioita
(tässä tapauksessa kirjaimia), jossa sama alkio ei ikinä esiinny kahta
kertaa. Vaikka alkiot ovatkin linkitetyssä listassa jossakin
järjestyksessä, järjestyksellä ei ole merkitystä, kun listan sisältämää
alkioryhmää käsitellään joukkona. Esimerkiksi joukko {1, 2} voidaan
esittää linkitetyllä listalla joko 1 -> 2 tai 2 -> 1. Linkitetty
lista, jossa ei ole yhtään alkiota kuvaa tyjää joukkoa.
Ongelman kuvaus
Kirjoita C++-ohjelma, joka muodostaa kahden joukon s1 ja s2 (s kuten set)
unionin, ja tallettaa sen joukoksi s1. Ohjelman suorittamisen jälkeen s2
on tyhjä joukko. Kahden joukon unioni tarkoittaa joukkoa,
joka sisältää täsmälleen ne alkiot, jotka kuuluvat jompaan kumpaan tai
molempiin alkuperäisistä joukoista.
Kuten alla esitellyistä testitapauksista huomaat, voit olettaa, että
joukot s1 ja s2 annetaan linkitettyinä listoina samannimisten osoittimien
päässä. Huomaa, että harjoituksessa on määriteltynä myös ylimääräiset
osoittimet p1, p2 ja prev1, joita
voit käyttää apuna. Tässä harjoituksessa ei ole tarkoitus
määritellä muita osoittimia.
Varmista, että kirjoittamasi ohjelmakoodi toimii oikein kaikissa
erilaisissa tapauksissa, oli joukkoina mitä tahansa. Seuraavat 10
testitapausta helpottavat ohjelmasi testaamista. Kirjoita ohjelmakoodisi
valmiiksi ja kopioi se sitten vuorotellen jokaiseen seuraavista JHAVEPOP
testeistä kokeillaksesi sen toimintaa eri tilanteissa.
Testitapaus #1
Kuvaus: s1 on tyhjä joukko.
Alkutilanne:
Lopputilanne:
Valmiina testaamaan?
Testitapaus #2
Kuvaus: s2 on tyhjä joukko.
Alkutilanne:
Lopputilanne:
Valmiina testaamaan?
Testitapaus #3
Kuvaus: Molemmat joukoista s1 ja s2 ovat tyhjiä.
Alkutilanne:
Lopputilanne:
Valmiina testaamaan?
Testitapaus #4
Kuvaus: Joukko s1 sisältää vain yhden alkion, joka on myös
joukossa s2.
Alkutilanne:
Lopputilanne:
Valmiina testaamaan?
Testitapaus #5
Kuvaus: Joukko s1 sisältää vain yhden alkion, joka ei ole
joukossa s2.
Alkutilanne:
Lopputilanne:
Valmiina testaamaan?
Testitapaus #6
Kuvaus: Joukoilla s1 ja s2 ei ole yhteisiä alkioita.
Alkutilanne:
Lopputilanne:
Valmiina testaamaan?
Testitapaus #7
Kuvaus: Joukko s1 on sama kuin joukko s2.
Alkutilanne:
Lopputilanne:
Valmiina testaamaan?
Testitapaus #8
Kuvaus: Joukon s1 ensimmäinen alkio kuuluu myös joukkoon s2, mutta
viimeinen alkio ei kuulu.
Alkutilanne:
Lopputilanne:
Valmiina testaamaan?
Testitapaus #9
Kuvaus: Joukon s1 viimeinen alkio kuuluu myös joukkoon s2, mutta
ensimmäinen alkio ei kuulu.
Alkutilanne:
Lopputilanne:
Valmiina testaamaan?
Testitapaus #10
Kuvaus: Satunnainen tapaus, jossa osa alkioista kuuluu molempiin
joukkoihin ja osa ei.
Alkutilanne:
Lopputilanne:
Valmiina testaamaan?
Takaisin JHAVEPOP harjoituksiin
|