Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Benoit AUGER--DUBOIS
L2_S1_ALGO_STRUCT_DONNEE
Commits
cb700be5
Commit
cb700be5
authored
Dec 06, 2021
by
Benoit AUGER--DUBOIS
Browse files
jsp
parent
32595366
Changes
1
Hide whitespace changes
Inline
Side-by-side
Tp5/tp5Bis.cpp
View file @
cb700be5
...
...
@@ -210,6 +210,28 @@ t_seance* findFirstSeance(t_seance* seance){
return
findFirstSeance
(
seance
->
seancePrecedent
);
}
//rôle : fonction qui retourne la dernière séance d'une liste chainé de séance */
t_seance
*
findLastSeance
(
t_seance
*
seance
){
if
(
seance
->
seanceSuivante
==
nullptr
){
return
seance
;
}
return
findFirstSeance
(
seance
->
seanceSuivante
);
}
//rôle : fonction qui retourne vrai si une séance est présente 2 fois */
bool
isThereAMatchingSeance
(
t_seance
*
seance
,
int
numeroSemaine
,
int
jourSemaine
,
int
heures
,
int
minutes
){
bool
compare
=
false
;
while
(
seance
!=
nullptr
){
if
(
seance
->
numeroSemaine
==
numeroSemaine
&&
seance
->
jourSemaine
==
jourSemaine
&&
seance
->
heures
==
heures
&&
seance
->
minutes
==
minutes
){
compare
=
true
;
break
;
}
seance
=
seance
->
seanceSuivante
;
}
return
compare
;
}
// Question 5.1 :
/*----------------------------------------------
rôle : Fonction qui retourne le nombre de séance après une séance dans une liste chainé de séance */
...
...
@@ -334,8 +356,28 @@ la chaine facilement en catégorie et ainsi comparer ses éléments facilement.
// Question 8 :
/*----------------------------------------------
rôle : fonction qui fusionne deux chaînages de séance en supprimant les doublons puis retourne le nouveaux chaînage. */
t_seance
*
fusionClone
(
t_seance
*
chaine1
,
t_seance
*
chaine2
){
rôle : fonction qui crée et retourne un chaînages de séance en fusionnant deux chaînage de séance donnée sans doublons.*/
t_seance
*
fusionNew
(
t_seance
*
chaine1
,
t_seance
*
chaine2
){
t_seance
*
temp
;
chaine1
=
findFirstSeance
(
chaine1
);
chaine2
=
findFirstSeance
(
chaine2
);
chaine1
->
seancePrecedent
=
findLastSeance
(
chaine2
);
t_seance
*
chaine3
=
findFirstSeance
(
chaine2
);
while
(
chaine3
!=
nullptr
){
if
(
isThereAMatchingSeance
(
chaine3
,
chaine3
->
numeroSemaine
,
chaine3
->
jourSemaine
,
chaine3
->
heures
,
chaine3
->
minutes
)
){
temp
=
chaine3
->
seanceSuivante
;
desallocationSeance
(
chaine3
);
chaine3
=
temp
;
}
chaine3
=
chaine3
->
seanceSuivante
;
}
return
findFirstSeance
(
chaine3
);
}
/*----------------------------------------------
rôle : fonction qui fusionne un chaînages de séance a un autres en supprimant les doublons,
puis retourne chaînage1 sans crée de nouveaux chaînage. */
t_seance
*
fusion
(
t_seance
*
chaine1
,
t_seance
*
chaine2
){
chaine1
=
findFirstSeance
(
chaine1
);
chaine2
=
findFirstSeance
(
chaine2
);
t_seance
*
temp1
=
chaine1
;
...
...
@@ -351,6 +393,7 @@ t_seance* fusionClone(t_seance* chaine1, t_seance* chaine2){
temp2
=
temp2
->
seanceSuivante
;
temp1
=
chaine1
;
}
chaine1
->
seancePrecedent
=
temp1
=
findLastSeance
(
chaine1
);
temp1
->
seanceSuivante
=
chaine2
;
return
chaine1
;
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment