Professional Documents
Culture Documents
Cours ASD Chapitre4
Cours ASD Chapitre4
Cours ASD Chapitre4
Chapitre
Les structures
de données
séquentielles
2EMHFWLI
x $SSUHQGUHjGpILQLUDEVWUDLWHPHQWGHVW\SHVGHGRQQpHV
x 6DYRLUGLVWLQJXHUHQWUHXQHUHSUpVHQWDWLRQGHGRQQpHVVpTXHQWLHOOHFRQWLJHHWFKDvQpH
x 6DYRLUGpILQLUOHVGLIIpUHQWHVVWUXFWXUHVGHGRQQpHVVpTXHQWLHOOHVFKDvQpHV
x 'pILQLUGHVVWUXFWXUHVGHGRQQpHVVpTXHQWLHOOHVSRXUODUHSUpVHQWDWLRQGHV3LOHVHWGHV
)LOHV
7\SHDEVWUDLW
6LJQDWXUH
8QHVLJQDWXUHFRPSUHQGOHQRPGXW\SHSRXUFHUWDLQVQRPEUHVGDQVXQHQVHPEOHGHYDOHXUV
SDUH[HPSOHHQWLHUUpHOFDUDFWqUHERROpHQHWF
8QHVLJQDWXUHFRPSUHQGDXVVLOHVSURWRW\SHVGHVRSpUDWLRQV&HVSURWRW\SHVSUpFLVHQWjTXHOV
W\SHVDSSDUWLHQQHQWOHVSDUDPqWUHVHWOHVUpVXOWDWVGHFKDTXHRSpUDWLRQ
+7(**$5
Chapitre 4 Les structures séquentielles
'DQVOHFKDSLWUHSUpFpGHQWQRXVDYRQVYXTXHODGpFODUDWLRQG¶XQYHFWHXUQpFHVVLWHGHSUpFL
VHUVDWDLOOHORUVGHVDFUpDWLRQ(QSUDWLTXHOHVDOJRULWKPHVWUDLWDQWFHVYHFWHXUVVRQWGpILQLV
TXHVXUGHVVRXVYHFWHXUVOLPLWpVSDUOHXUVGHX[ERUQHVLQIpULHXUHHWVXSpULHXUH
2QSHXWSDUH[HPSOHGpILQLUXQHVLJQDWXUHSRXUOHW\SHYHFWHXUWHOVTXHOHXUVpOpPHQWVGRLYHQW
rWUHLQLWLDOLVpV
([HPSOH
7\SHݎݑ݁ݐܿ݁ݒ
3URWRW\SHV
ݎݑ݁ݐܸܿ݁ݎ݁݁ݎܿݎݑ݁ݐܿ݁ݒሺ݅݊ݐሻǢ
݅݊ݔܽܯ݈݈݁݅ܽݐݐሺݎݑ݁ݐܿ݁ݒሻǢ
݅݊݁ݒ݅ݐ݂݂ܿ݁ܧ݈݈݁݅ܽݐݐሺݎݑ݁ݐܿ݁ݒሻǢ
ݎݑ݁ݐܸܿ݁݁ݎ݈݅ݎݑ݁ݐܿ݁ݒሺݎݑ݁ݐܿ݁ݒǡ ݅݊ݐǡ ݅݊ݐሻǢ
݂݅݊݊ܫ݁݊ݎܾݐ±݁ݎݑ݁݅ݎሺݎݑ݁ݐܿ݁ݒሻ
݅݊ݑܵ݁݊ݎܾݐ±݁ݎݑ݁݅ݎሺݎݑ݁ݐܿ݁ݒሻǢ
ܾݐ݅݊ܫݐ݈݊݁݉݁ܧ݈݊ܽ݁ሺݎݑ݁ݐܿ݁ݒǡ ݅݊ݐሻǢ
݈݁݁݉݁݊ܿܿܽݐ°ݏሺݎݑ݁ݐܿ݁ݒǡ ݅݊ݐሻǢ
ݎ݂݁݅݅݀݉ݎݑ݁ݐܿ݁ݒሺݎݑ݁ݐܿ݁ݒǡ ݈݁݁݉݁݊ݐǡ ݅݊ݐሻǢ
ܾܸ݁݀݅ݐݏ݈݁݊ܽ݁ሺݎݑ݁ݐܿ݁ݒሻǢ
3RXUGRQQHUXQHVLJQLILFDWLRQjFHVRSpUDWLRQVQRXVDOORQVYRLUOHVD[LRPHV
$[LRPHV
/HVD[LRPHVGpILQLVVHQWWRXWHVOHVSURSULpWpVGHVRSpUDWLRQVGpILQLHVGDQVODVLJQDWXUH
([HPSOH
5DSSHODQWTXHQRXVYRXORQVGpILQLUXQW\SHDEVWUDLWG¶XQVRXVYHFWHXUGRQWWRXVOHVpOpPHQWV
HQWUH OHV GHX[ ERUQHV LQIpULHXUH HWVXSpULHXUHVRLHQWLQLWLDOLVpV 'DQV O¶H[HPSOH VXLYDQW QRXV
pFULYRQVTXHOTXHVD[LRPHVVXUOHVRSpUDWLRQVGHODVLJQDWXUHGXW\SHYHFWHXU
Préconditions
+7(**$5
Chapitre 4 Les structures séquentielles
Axiomes
'¶DSUqV FHV D[LRPHV RQ SHXW GpGXLUH TX¶XQ YHFWHXU ݒHVW FUpp j O¶DLGH GH O¶RSpUDWLRQ
ܿݎݑ݁ݐܸܿ݁ݎ݁݁ݎሺ݊݉ܽ ݔሻHWLOHVWFRQVLGpUpYLGHORUVGHVDFUpDWLRQ3RXUXWLOLVHUOHYHFWHXUݒQRXV
GHYURQVGDQVFHFDVOLPLWHUOHVWUDLWHPHQWVTXHVXUXQVRXVYHFWHXUݒǯLQLWLDOLVpSDUO¶RSpUDWLRQ
݈݅ݎݑ݁ݐܸܿ݁݁ݎሺݒǡ ݂݅݊ǡ ݑݏሻ&HWWHGHUQLqUHRSpUDWLRQGpILQLWDXVVLOHVGHX[ERUQHVLQIpULHXUHHWVX
SpULHXUHGXVRXVYHFWHXUݒǯ
(QSUDWLTXHFHWLQFRQYpQLHQWUHYLHQWjODGpFODUDWLRQVWDWLTXHGHYHFWHXUGDQVOHVSURJUDPPHV
LQIRUPDWLTXH3RXUSDLOOHUjFHSUREOqPHRQSURFqGHJpQpUDOHPHQWjO¶XWLOLVDWLRQG¶DXWUHVVWUXF
WXUHVGHGRQQpHVWHOOHVTXHOHVOLVWHVFKDvQpHV
+7(**$5
Chapitre 4 Les structures séquentielles
'pILQLWLRQIRUPHOOHVGHVOLVWHV
8QHOLVWHOLQpDLUHɉHVWXQHVXLWHILQLHpYHQWXHOOHPHQWYLGHG¶pOpPHQWVUHSpUpVVHORQOHXUUDQJ
GDQVODOLVWHɉ ൌ൏ ଵ ǡ ଶ ǡ Ǥ Ǥ ǡ ୬
/¶RUGUH GHV pOpPHQWV GDQV XQH OLVWH HVW IRQGDPHQWDO ,O IDXW UHPDUTXHU TXH FH Q¶HVW SDV XQ
RUGUHVXUOHVpOpPHQWVPDLVXQRUGUHVXUOHVSODFHVGHVpOpPHQWV&HVSODFHVVRQWWRWDOHPHQW
RUGRQQpHVHWLOH[LVWHXQHIRQFWLRQݐ݊ܽݒ݅ݑݏWHOOHTXHWRXWHSODFH RXFHOOXOH HVWDFFHVVLEOHHQ
DSSOLTXDQWݐ݊ܽݒ݅ݑݏGHPDQLqUHUpSpWpHjSDUWLUGHODSUHPLqUHFHOOXOHGHODOLVWH3RXUWRXWHFHO
OXOHܿG¶XQHOLVWHߣQRQYLGHRQDGRQF
2ݐ²݁ݐሺߣሻLQGLTXHODSUHPLqUHFHOOXOHGHߣ&KDTXHFHOOXOHjXQFRQWHQXTXLHVWXQpOpPHQW
([HPSOHG¶XQW\SHDEVWUDLWOLVWH
1RXV GpILQLVVRQV LFL XQH VLJQDWXUH G¶XQ W\SH DEVWUDLW ݁ݐݏ݅ܮHQ SRUWDQW FRPPH RSpUDWLRQV GH
EDVHݐ²݁ݐሺߣሻTXLUHQGODSUHPLqUHFHOOXOHG¶XQHOLVWHO¶RSpUDWLRQ݆ܽݎ݁ݐݑሺ݁ǡ ɉሻTXLLQVqUHXQpOp
PHQWjODWrWHGHOLVWHHWO¶RSpUDWLRQݎ݁݉݅ݎݑݏሺɉሻTXLUHQGODOLVWHDPSXWpHGHVDSUHPLqUHFHO
OXOH
7\SH݈݁ݑ݈݈݁ܥ݁ݐݏ݅ܮ
3URWRW\SHV
ܸ݁݀݅݁ݐݏ݈݅݁ݐݏ݅ܮሺ ሻǢ
ݐ݈݁ݑ݈݈݁ܥ²݁ݐሺ݁ݐݏ݅ܮሻǢ
ݎ݁ݐݑ݆ܽ݁ݐݏ݅ܮሺ±݈±݉݁݊ݐǡ ݁ݐݏ݅ܮሻǢ
ݎ݁݉݅ݎݑݏ݁ݐݏ݅ܮሺ݁ݐݏ݅ܮሻǢ
±݈±݉݁݊ݎ݁݅݉݁ݎݐሺ݁ݐݏ݅ܮሻǢ
±݈±݉݁݊ݑ݊݁ݐ݊ܿݐሺ݈݁ݑ݈݈݁ܥሻǢ
ݐ݊ܽݒ݅ݑݏ݈݁ݑ݈݈݁ܥሺ݈݁ݑ݈݈݁ܥሻǢ
3UpFRQGLWLRQV
ݐ²݁ݐሺɉሻHVWGpILQLHVLHWVHXOHPHQWVLɉ ് ݈ܸ݅݁݀݅݁ݐݏ
ݎ݁݉݅ݎݑݏሺɉሻHVWGpILQLHVLHWVHXOHPHQWVLɉ ് ݈ܸ݅݁݀݅݁ݐݏ
ݎ݁݅݉݁ݎሺɉሻHVWGpILQLHVLHWVHXOHPHQWVLɉ ് ݈ܸ݅݁݀݅݁ݐݏ
+7(**$5
Chapitre 4 Les structures séquentielles
$[LRPHV
6RLHQWߣ݊ݑ݁ݐ݁݁ݐݏ݅ܮ݁݊ݑ±݈±݉݁݊ݐ
/HVSOXVFRXUDQWHVVRQWOHVUHSUpVHQWDWLRQVFRQWLJHVHWOHVUHSUpVHQWDWLRQVFKDLQpHV
5HSUpVHQWDWLRQFRQWLJHGHVOLVWHV
3RXU FHUWDLQV ODQJDJHVGH SURJUDPPDWLRQ TXLQH GRQQHQWSDV OD SRVVLELOLWp GH ODFUpDWLRQ G\
QDPLTXHGHYDULDEOHVFHWWHUHSUpVHQWDWLRQSHUPHWO¶LPSOpPHQWDWLRQGHVOLVWHVVHORQODGpILQLWLRQ
TXHQRXVDYRQVYXHGDQVOHVVHFWLRQVSUpFpGHQWHV/DUHSUpVHQWDWLRQFRQWLJHHVWEDVpHVXU
O XWLOLVDWLRQ G¶XQ YHFWHXU /HV pOpPHQWV GH OD OLVWH VRQW VLPSOHPHQW UDQJpV GDQV XQ YHFWHXU j
OHXUSODFHUHVSHFWLYH3RXUFHODQRXVGpILQLVVRQVOHVVWUXFWXUHVGHGRQQpHVVXLYDQWHV
typedefintelement;
typedefstructListe{
elementvecteur[100];
intlongueur;
}Liste;
ListeListeVide(Listel){
l.longueur=0;
returnl;
}
/DIRQFWLRQܸ݁݀݅݁ݐݏ݅ܮሺ݈݁ݐݏ݅ܮሻSHUPHWGHFUpHUXQHOLVWHYLGHሺ݈Ǥ ݈ ݎݑ݁ݑ݃݊ൌ Ͳ 'DQVODVXLWHGH
FHFRXUVQRXVFRQVLGpURQVTXHOHSUHPLHUpOpPHQWGHODOLVWHVHWURXYHjODSRVLWLRQ F HVWj
GLUH݈Ǥ ݎݑ݁ݐܿ݁ݒሾͳሿHWQRQSDV݈Ǥ ݎݑ݁ݐܿ݁ݒሾͲሿ
6RLWܮXQHYDULDEOHGHW\SH݁ݐݏ݅ܮGRQFRQSHXWODFUpHFRPPHVXLW
ListeL;
L=ListeVide(L);
/¶DYDQWDJHGHFHWWHUHSUpVHQWDWLRQUpVLGHGDQVOHIDLWTX¶RQSHXWDFFpGHUGLUHFWHPHQWjXQpOp
PHQW GDQV OD OLVWH 3DU H[HPSOH SRXU DFFpGHU DX ݇݅°݉݁ pOpPHQW GH OD OLVWH LO VXIILW G¶XWLOLVHU
O¶H[SUHVVLRQܮǤ ݎݑ݁ݐܿ݁ݒሾ݇ሿF¶HVWGRQFXQDFFqVGLUHFW
+7(**$5
Chapitre 4 Les structures séquentielles
$OJRULWKPHGHSDUFRXUVG¶XQHOLVWHFRQWLJH
/DSURFpGXUH݂݂݄ܽ݅ܿ݁݁ݐݏ݅ܮሺ݈݁ݐݏ݅ܮሻIDLWXQSDUFRXUVGDQVODOLVWH݈HQDIILFKDQWOHVYDOHXUVGHV
pOpPHQWV©GHJDXFKHjGURLWHª
voidparcours(Listel){
inti;
intn=l.longueur;
for(i=1;i<=n;i++)
printf("liste(%d)=%d\n",i,l.vecteur[i]);
}
2SpUDWLRQG¶LQVHUWLRQGDQVOHVOLVWHVFRQWLJHV
1RXVUDSSHORQVTXHO¶LQVHUWLRQG¶XQpOpPHQW݁GDQVXQHOLVWHYLGHV¶HIIHFWXHjO¶LQGLFHGXYHF
WHXU݈Ǥ ݎݑ݁ݐܿ݁ݒHWODSRVLWLRQG¶XQHFHOOXOHHVWGpILQLHGDQVO¶LQWHUYDOOHܲ ൌ ሾͳǤ Ǥ ݈Ǥ ݈ݎݑ݁݃݊ሿ
3RXULQVpUHUXQpOpPHQW݁GDQVXQHOLVWHFRQWLJHܮRQSURSRVHO¶DOJRULWKPHVXLYDQW
voidajouter(Liste*l,elemente,intpos){
inti;
intn=(*l).longueur;
if(n<nmaxŞ1&&pos>0&&pos<=n+1){
for(i=n;i>=pos;iŞŞ)
(*l).vecteur[i+1]=(*l).vecteur[i];
(*l).vecteur[pos]=e;
(*l).longueur=n+1;
}
}
2SpUDWLRQGHVXSSUHVVLRQGDQVOHVOLVWHVFRQWLJHV
8QHSUpFRQGLWLRQGHODVXSSUHVVLRQHVWTXHODOLVWHQHVRLWSDVYLGHHWODSRVLWLRQGHODSODFHj
VXSSULPHUHVWXQHSRVLWLRQYDOLGH
voidsupprimer(Liste*l,intpos){
inti;
intn=(*l).longueur;
if(pos>0&&pos<=n){
for(i=pos;i<=nŞ1;i++)
(*l).vecteur[i]=(*l).vecteur[i+1];
(*l).longueur=nŞ1;
}
}
,QFRQYpQLHQWGHUHSUpVHQWDWLRQFRQWLJH
2Q YRLW TXH ODVXSSUHVVLRQ UHVSHFWLYHPHQW O¶LQVHUWLRQ GHPDQGH DX SLUH FDV݊ െ ͳ UHVSHFWL
YHPHQW ݊ ͳ RSpUDWLRQV G¶DIIHFWDWLRQ SRXU OH GpFDODJH GHV pOpPHQWV R ݊ HVW OH QRPEUH
+7(**$5
Chapitre 4 Les structures séquentielles
G¶pOpPHQWVGHODOLVWH2QFRQVWDWHGRQFTXHO¶LQVHUWLRQHWODVXSSUHVVLRQG¶XQpOpPHQWVRQWGHV
RSpUDWLRQVFRWHXVHVSRXUODPDQLSXODWLRQGHFHWWHVWUXFWXUHGHGRQQpHV
3RXU pYLWHU FHV LQFRQYpQLHQWV QRXV XWLOLVRQV XQH UHSUpVHQWDWLRQ FKDvQpH HQ XWLOLVDQW OHV SRLQ
WHXUV
5HSUpVHQWDWLRQFKDvQpH
8QH OLVWH FKDvQpH HVW XQH VWUXFWXUH OLQpDLUH GDQV ODTXHOOH OHV FHOOXOHVVRQW pSDUSLOOpHV GDQVOD
PpPRLUHHWUHOLpHVHQWUHHOOHVSDUGHVSRLQWHXUV/DOLVWHHVWDFFHVVLEOHXQLTXHPHQWSDUVDWrWH
F¶HVWjGLUHVRQSUHPLHUpOpPHQW
3RXUOHVOLVWHVFKDvQpHVODVpTXHQFHHVWPLVHHQ°XYUHSDUOHSRLQWHXUFRQWHQXGDQVFKDTXH
FHOOXOHHWTXLLQGLTXHO HPSODFHPHQWGHODFHOOXOHVXLYDQWH/Hpointeur de la cellule suivante
GHODGHUQLqUHFHOOXOHG¶XQHOLVWHQHSRLQWHQXOOHSDUW ܷܰ ܮܮ2QDFFqGHjXQpOpPHQWGHODOLVWH
HQSDUFRXUDQWOHVFHOOXOHVJUkFHjOHXUVSRLQWHXUV
([HPSOH
/ #&
#& #& #& #&
6XL#& 6XL#& 6XL#& 6XL18//
(OP% (OP& (OP' (OP)
3RXU DFFpGHU DX WURLVLqPH pOpPHQW GH OD OLVWHLO IDXW WRXMRXUV GpEXWHUO¶DFFqV j ODOLVWH SDU VD
SUHPLqUHFHOOXOHTXLFRQWLHQWXQpOpPHQWHWOHSRLQWHXUGHODGHX[LqPHFHOOXOH$WUDYHUVOHSRLQ
WHXUGHODFHOOXOHVXLYDQWHRQDFFqGHjODGHX[LqPHFHOOXOHSXLVGHODPrPHPDQLqUHRQDUULYH
jODWURLVLqPHFHOOXOHTXLFRQWLHQWO¶pOpPHQWTXHO¶RQYHXWDFFpGHU
,OHVWLPSRUWDQWGHVLJQDOHUTX¶DYHFFHWWHSUpVHQWDWLRQ
x /HVQ°XGVQHVRQWSDVRUGRQQpVVpTXHQWLHOOHPHQWHQPpPRLUH
x /DOLVWHYLGHHVWUHSUpVHQWpHSDUXQSRLQWHXUܷܰܮܮ
3RXUDMRXWHUVXSSULPHURXGpSODFHUXQpOpPHQWLOVXIILWG DOORXHUG\QDPLTXHPHQWXQHSODFHHQ
PpPRLUHHWGHPHWWUHjMRXUOHVSRLQWHXUVGHVFHOOXOHVVXLYDQWHV
+7(**$5
Chapitre 4 Les structures séquentielles
9DULDEOHG\QDPLTXH
/HVOLVWHVFKDvQpHVIRQWDSSHOjODQRWLRQGHYDULDEOHG\QDPLTXH&HWWHYDULDEOHHVWGpFODUpHDX
GpEXWGHO H[pFXWLRQG XQSURJUDPPHVDQVrWUHFUpH/RUVTX¶RQYHXWO¶XWLOLVpHRQLQYRTXHXQH
IRQFWLRQVSpFLILTXHSRXUIDLUHXQHDOORFDWLRQG¶HVSDFHPpPRLUHSRXUHOOH&HWWHIRQFWLRQUHQYRLH
O¶DGUHVVHGHO¶HVSDFHFUpHTXLVHUDDVVRFLpHjFHWWHYDULDEOH
8QH IRLV OD YDULDEOH G\QDPLTXH QH VHUD SOXV XWLOLVpH GDQV OH SURJUDPPH RQ SHXW OD GpWUXLUH
F HVWjGLUHTX¶RQOLEqUHO¶HVSDFHPpPRLUHTX HOOHRFFXSDLW
([HPSOH
& #& #&
6XL18//
(OP)
&
/D YDULDEOH GH W\SH SRLQWHXU ܥSRLQWH VXU O HVSDFH PpPRLUH ܥ כG DGUHVVH ̷ǣ ܥͶ &HWWH FHOOXOH
PpPRLUHFRQWLHQWODYDOHXU ̶̶ܨGDQVOHFKDPS ݈݉ܧHWODYDOHXUVSpFLDOHܷܰܮܮGDQVOHFKDPS
ܵ&݅ݑHFKDPSVHUYLUDjLQGLTXHUTXHOOHHVWODFHOOXOHVXLYDQWHORUVTXHFHWWHFHOOXOHIHUDSDUWLH
G¶XQH OLVWH /D YDOHXU ܷܰ ܮܮLQGLTXH TX¶LO Q¶\ D SDV XQH FHOOXOH VXLYDQWH ܥ כHVW O REMHW GRQW
O DGUHVVHHVWUDQJpHGDQVܥ
/LVWHVLPSOHPHQWFKDvQpH
8QHFHOOXOHG XQHOLVWHVLPSOHPHQWFKDvQpHHVWXQHVWUXFWXUHGHGRQQpHVIRUPpHGH
x 8QHGRQQpHRXLQIRUPDWLRQDSSHOpH±݈±݉݁݊ݐ
x 8QSRLQWHXUQRPPpݐ݊ܽݒ݅ݑݏTXLLQGLTXHO¶DGUHVVHGHODFHOOXOHVXLYDQWHGDQVODOLVWH
1RXVSURSRVRQVOHVVWUXFWXUHVGHGRQQpHVVXLYDQWHVSRXUODUHSUpVHQWDWLRQGHVOLVWHVVLPSOH
PHQWFKDvQpHV
typedefintelement;
typedefstructCellule{
elementcontenu;
structCellule*suivant;}Cellule;
typedefCellule*Liste;
8QHOLVWH݈GHW\SH݁ݐݏ݅ܮHVWUpIpUHQFpH DFFHVVLEOH SDUO¶DGUHVVHGHODSUHPLqUHFHOOXOH&HWWH
DGUHVVHHVWDIIHFWpHjXQSRLQWHXUGXW\SH݈݁ݑ݈݈݁ܥ/RUVTXHFHSRLQWHXUHVWܷܰܮܮRQFRQVLGqUH
TXHODOLVWH݈HVW݁݀݅ݒ
+7(**$5
Chapitre 4 Les structures séquentielles
2EVHUYDWHXUVVXUOHVOLVWHVVLPSOHPHQWFKDvQpHV
x ࢚ࢋ࢛࢘ ൌ ࢇࢉሺ࢚࢚ࢇࢋሻ݈݈݁݅ܽݐHVWXQSDUDPqWUHTXLLQGLTXHODWDLOOHHQRFWHWV
GHO¶HVSDFHPpPRLUHjUpVHUYHUSDUODIRQFWLRQ݈݈݉ܽܿሺሻǤ&HWWHIRQFWLRQGRQQHSRXUYD
OHXUjO DGUHVVHGHO¶HVSDFHFUpH2QGLWDXVVLTXHQRXVDOORXRQVXQHVSDFHPpPRLUH
SRXUXQHYDULDEOHVXUOHTXHOSRLQWH
x ࢌ࢘ࢋࢋሺ࢚ࢋ࢛࢘ሻOLEqUHO HVSDFHPpPRLUHVXUOHTXHOLOSRLQWHOHSRLQWHXU
'DQV FH TXL VXLW QRXV GpILQLVVRQV OHV WURLV REVHUYDWHXUV ܸ݁݁݀݅ݐݏሺሻǡ ݈ݎݑ݁ݑ݃݊ሺሻ݁ݏݎݑܿݎܽݐሺሻ
VXUOHVOLVWHVVLPSOHPHQWFKDvQpHV
2EVHUYDWHXUࢋ࢙࢚ࢂࢊࢋሺࡸ࢙࢚ࢋࡸሻIRQFWLRQTXLUHQYRLHVLODOLVWHHVWYLGHVLQRQ
intestVide(ListeL){
return(L==NULL);
}
2EVHUYDWHXU ࢍ࢛ࢋ࢛࢘ሺࡸ࢙࢚ࢋࡸሻ IRQFWLRQ UpFXUVLYH TXL UHQYRLH OH QRPEUH GH FHOOXOHV G¶XQH
OLVWHVLPSOHPHQWFKDvQpH
intlongueur(ListeL){
if(L==NULL)return0;
elsereturn1+longueur(LŞ>suivant);
}
2EVHUYDWHXUࢇ࢘ࢉ࢛࢙࢘ࡸ࢙࢚ࢋሺࡸ࢙࢚ࢋࡸሻ(QSDUFRXUDQWXQHOLVWHVLPSOHPHQWFKDvQpHFHWWHSUR
FpGXUHLWpUDWLYHDIILFKHOHVpOpPHQWVFRQWHQXVGDQVOHVFHOOXOHVGHODOLVWH
voidparcoursListe(Listel){
inti=1;
while(l!=NULL){
printf("Liste(%d)=%d\n",i++,lŞ>contenu);
l=lŞ>suivant;
}
}
2SpUDWLRQVVXUODPDQLSXODWLRQGHVOLVWHV
+7(**$5
Chapitre 4 Les structures séquentielles
voidinsererEnTete(Liste*l,elemente){
Cellule*c;
c=malloc(sizeof(Cellule));
cŞ>contenu=e;
cŞ>suivant=*l;
*l=c;
}
2SpUDWLRQࢇ࢛࢚ࢋ࢘ሺࡸ࢙࢚ࢋ כǡ ࢋࢋࢋ࢚ࢋǡ ࢚࢙ሻIRQFWLRQTXLSHUPHWODFUpDWLRQG\QDPLTXH
G¶XQHFHOOXOHFRQWHQDQWO¶pOpPHQW݁/DIRQFWLRQUpDOLVHODUHFUpDWLRQHWO¶LQVHUWLRQG¶XQHFHOOXOH
VDXIVLODSRVLWLRQHVWYDOLGHGDQVFHFDVHOOHUHQYRLHVLQRQHOOHUHYRLH
intajouter(Liste*l,elemente,intpos){
Cellule*p;
Cellule*n;
if(pos<1||pos>longueur(*l)+1){ printf("positioninvalide!");
return0;}
if(pos==1){insererEnTete(l,e);
return1;}
p=*l;
inti=1;
while(i<posŞ1){
p=pŞ>suivant;
i++;}
n=malloc(sizeof(Cellule));
nŞ>contenu=e;
nŞ>suivant=pŞ>suivant;
pŞ>suivant=n;
return1;
}
2SpUDWLRQ °ࢋሺࡸ࢙࢚ࢋ כǡ ࢚࢙ሻ VL ݏHVW XQH SRVLWLRQ YDOLGH OD IRQFWLRQ ݅°݉݁ UHQYRLH
O¶DGUHVVHGHODFHOOXOHTXLVHWURXYHjFHWWHSRVLWLRQVLQRQHOOHUHYRLHܷܰܮܮ
Cellule*ieme(Listel,intpos){
if(pos<1||pos>longueur(l))returnNULL;
inti=1;
while(i<pos){
i=i+1;
l=lŞ>suivant;
}
returnl;
}
2SpUDWLRQ࢙࢛࢘ࢋ࢘ሺࡸ࢙࢚ࢋ כǡ ࢚࢙ሻ6LݏHVWXQHSRVLWLRQYDOLGHFHWWHIRQFWLRQVXS
SULPHODFHOOXOHTXLVHWURXYHjODSRVLWLRQݏHWHOOHUHQYRLHVLQRQ
intsupprimer(Liste*l,intpos){
Cellule*place;
+7(**$5
Chapitre 4 Les structures séquentielles
inti;
if(*l==NULL){printf("ListeVide\n");return0;}
if(pos<1||pos>longueur(*l)){printf("positioninvalide!\n");return0;}
if(pos==1){ place=*l;
*l=(*l)Ş>suivant;
free(place);
return1;}
place=*l;
for(i=1;i<posŞ1;i++)
place=placeŞ>suivant;
Cellule*temp=placeŞ>suivant;
placeŞ>suivant=placeŞ>suivantŞ>suivant;
free(temp);
return1;
}
(QDQDO\VDQWOHVGHX[IRQFWLRQ݆ܽݎ݁ݐݑሺሻHWݎ݁݉݅ݎݑݏሺሻRQUHPDUTXHTXHFHVGHX[IRQFWLRQV
IRQWXQDSSHOjODIRQFWLRQ݈ݎݑ݁ݑ݃݊ሺሻTXLSRVVqGHXQHFRPSOH[LWpܱሺ݊ሻ2QSHXWGpPLQHXUOD
FRPSOH[LWp GHV IRQFWLRQV ݆ܽݎ݁ݐݑHW ݎ݁݉݅ݎݑݏVL RQ WURXYH G¶DXWUHV YDULDQWHV GH FHV GHX[
IRQFWLRQVVDQVIDLUHOHFDOFXOGHODORQJXHXUGHODOLVWH YRLUO¶H[HUFLFH
$XWUHVYDULDQWHVGHOLVWHVVLPSOHPHQWFKDvQpHV
'DQVODVWUXFWXUHGHODOLVWHSURSRVpHSUpFpGHPPHQWO¶DFFqVjODGHUQLqUHFHOOXOHQHSHXWrWUH
V¶HIIHFWXHUVDXIVLRQIDLWXQSDUFRXUVFRPSOHWGHVHVFHOOXOHV&HTX¶HVWYUDLPHQWWUqVFRXWHX[
GDQVOHFDVRO RQVRXKDLWHSDUH[HPSOHRSpUHUVXUODILQGHODOLVWH O¶LQVHUWLRQRXODVXSSUHV
VLRQ GX GHUQLHU pOpPHQW 'RQF LOVHUD SOXV SUDWLTXH G¶XWLOLVHU G¶DXWUHV W\SHV GHOLVWHV VLPSOH
PHQWFKDvQpHVWHOOHVTXHOHVOLVWHVDYHFOHFRXSOH WrWHHWTXHXH OLVWHVFLUFXODLUHVHWF
,OHVWSDUIRLVSUDWLTXHGHGpILQLUXQHOLVWHQRQSDVXQLTXHPHQWSDUVDWrWHPDLVSDUXQEORFFRQ
WHQDQWSDUH[HPSOHODWrWHODTXHXHHWPrPHODORQJXHXUGHODOLVWH
7rWH#& #& #& #& #&
/RQJXHXU
6XL#& 6XL#& 6XL#& 6XL18//
4XHXH#&
(OP% (OP& (OP' (OP)
/HVVWUXFWXUHVGHGRQQpHVSHUPHWWDQWGHGpILQLUFHW\SHGHOLVWHVRQWGRQQpHVFRPPHVXLW
typedefstructCellule{
elementcontenu;
structCellule*suivant;}Cellule;
typedefstructListeTQ{
Cellule*Tete;
Cellule*Queue;
intlongueur;}ListeTQ;
+7(**$5
Chapitre 4 Les structures séquentielles
6RLW݈XQHYDULDEOHGHW\SHܳܶ݁ݐݏ݅ܮHWݏXQHQWLHUO¶RSpUDWLRQG¶LQVHUWLRQYDGRQFPRGLILHUOHV
FKDPSVGHODVWUXFWXUH݈ ܶ݁݁ݑ݁ݑܳ݁ݐHW݈ ݎݑ݁ݑ݃݊VHORQOHVFDVUpSHUWRULpVGDQVOHWDEOHDXFL
GHVVRXV
([HUFLFH
6ROXWLRQ
intinsereTQ(ListeTQ*l,elemente,intpos){
inti=1;
Cellule*p;
Cellule*n;
Cellule*t=(*l).Tete;
intlongueur=(*l).longueur;
if(pos<1||pos>longueur+1){printf("positioninvalide!");return0;}
if(pos==1){//Casd’insertionàlapremièreposition
insererEnTete(&t,e);
(*l).Tete=t;
if(longueur==0)//Casd’insertiondansunelistevide
(*l).Queue=t;
(*l).longueur=longueur+1;
return1;}
//Casd'insertiondansuneposition1<pos<longueur+1
p=t;
while(i<posŞ1){
p=pŞ>suivant;
i++;}
n=malloc(sizeof(Cellule));
nŞ>contenu=e;
nŞ>suivant=pŞ>suivant;
pŞ>suivant=n;
//Casd’insertionàlafindelaliste
if(pos==longueur+1)
(*l).Queue=n;
(*l).longueur=longueur+1;
return1;
}//FininsereTQ
+7(**$5
Chapitre 4 Les structures séquentielles
6RLW ݈XQH YDULDEOH GH W\SH ܳܶ݁ݐݏ݅ܮHW ݏXQ HQWLHU O¶RSpUDWLRQ GH VXSSUHVVLRQV PRGLILH OHV
FKDPSVGHODVWUXFWXUH݈ ܶ݁݁ݑ݁ݑܳ݁ݐHW݈ ݎݑ݁ݑ݃݊FRPPHVXLW
(FULUH XQH IRQFWLRQ ݅݊ܳܶݎ݁݉݅ݎݑݏݐሺ݈ כ ܳܶ݁ݐݏ݅ܮǡ ݅݊ݏݐሻ TXL UHQYRLH VL O¶pOpPHQW TXL VH
WURXYHjODSRVLWLRQݏHVWVXSSULPpVLQRQ
6ROXWLRQ
intsupprimerTQ(ListeTQ*l,intpos){
Cellule*place;
inti;
intlongueur=(*l).longueur;
Cellule*t=(*l).Tete;
if(t==NULL){printf("ListeVide\n");return0;}
if(pos<1||pos>longueur){printf("positioninvalide!\n");return0;}
if(pos==1){//suppressionentêtedeliste
(*l).Tete=(*l).TeteŞ>suivant;
(*l).longueur=longueurŞ1;
free(t);
return1;}
place=t;
for(i=1;i<posŞ1;i++)
place=placeŞ>suivant;
Cellule*temp=placeŞ>suivant;
placeŞ>suivant=placeŞ>suivantŞ>suivant;
free(temp);
if(pos==longueur)//cassuppressionàlafindelaliste
(*l).Queue=place;
(*l).longueur=longueurŞ1;
//Suppressiondansunelistecontenantunseulélément
if((*l).longueur==0){
(*l).Tete=NULL;
(*l).Queue=NULL;}
return1;}//FinsupprimerTQ
/LVWHVLPSOHPHQWFKDvQpHFLUFXODLUH
8QHOLVWHFLUFXODLUHHVWXQHOLVWHVLPSOHPHQWFKDvQpHGDQVODTXHOOHOHFKDPSݐ݊ܽݒ݅ݑݏGHODGHU
QLqUHFHOOXOHSRLQWHVXUODSUHPLqUHFHOOXOH3RXUPDQLSXOHUXQHOLVWHFLUFXODLUHQRXVFKRLVLVVRQV
+7(**$5
Chapitre 4 Les structures séquentielles
XQVHXOSRLQWG¶HQWUpHGDQVODOLVWHUHSUpVHQWpSDUOHSRLQWHXUTXLSRLQWHVXUODGHUQLqUHFHOOXOH
YRLUILJXUHFLGHVVRXV
dernier #&
#& #& #& #&
6XL#& 6XL#& 6XL#& 6XL#&
(OP% (OP& (OP' (OP)
$SDUWLUGHSRLQWHXU݀݁ݎ݁݅݊ݎRQSHXWDFFpGHUGLUHFWHPHQWjODGHUQLqUHFHOOXOHHQSOXVGDQVOH
FDVG¶XQHOLVWHQRQYLGHRQDFFqGHjODSUHPLqUHFHOOXOHSDUOHFKDPSݐ݊ܽݒ݅ݑݏGHODFHOOXOHVXU
ODTXHOOHLOSRLQW݀݁ݎ݁݅݊ݎ2QUHPDUTXHDXVVLTX¶RQSHXWIDLUHXQSDUFRXUVFRPSOHWGDQVXQVHXO
VHQVHQUHYHQDQWWRXMRXUVDXSRLQWHXU݀݁ݎ݁݅݊ݎ
/D SDUWLFXODULWp GH FHWWH VWUXFWXUH HVW TX¶LO Q¶H[LVWH SDV XQ FKDPS ݐ݊ܽݒ݅ݑݏൌ ܷܰ ܮܮTXHOOH TXH
VRLW OD FHOOXOH DSSDUWHQDQW j FHWWH OLVWH 1RXV GHYURQV GRQF IDLUH DWWHQWLRQ GH QH SDV ERXFOHU
LQILQLPHQWHQSDUFRXUDQWFHW\SHGHOLVWHV
8QH VROXWLRQ FRQVLVWH G¶DERUG j FRSLHU OD YDOHXU GX SRLQWHXU ݀݁ ݎ݁݅݊ݎDGUHVVH GH OD GHUQLqUH
FHOOXOH GDQVXQHYDULDEOH(݉݁ݐQVXLWHHQXWLOLVDQWFHGHUQLHUSRLQWHXURQFRPPHQFHOHSDU
FRXUV j SDUWLU GH OD FHOOXOH VXLYDQWH VXU ODTXHOOH LO SRLQW ݉݁ݐHW XQH IRLV RQ SRLQWHUD VXU XQH
FHOOXOH FRQWHQDQW XQ FKDPS ݐ݊ܽݒ݅ݑݏGRQW VD YDOHXU pJDOH j OD YDOHXU GH ݀݁ ݎ݁݅݊ݎRQ VH UHQG
FRPSWHTXHODFHOOXOHVXLYDQWHoDVHUDODGHUQLqUH
voidparcoursCirculaire(Listel){
Cellule*dernier=l;
Cellule*temp;
inti=1;
if(dernier!=NULL){
temp=dernier;
temp=tempŞ>suivant;
printf("liste(%d)=%d\n",i++,tempŞ>contenu);
while(temp!=dernier){
temp=tempŞ>suivant;
printf("liste(%d)=%d\n",i++,tempŞ>contenu);
}
}
}
/HVRSpUDWLRQVG¶LQVHUWLRQHWGHVXSSUHVVLRQVRQWGpILQLHVGDQVODVHFWLRQ
+7(**$5
Chapitre 4 Les structures séquentielles
/LVWHVGRXEOHPHQWFKDvQpHV
1RXV DYRQV YX TXH OH SDUFRXUV GDQV WRXWHV OHV YDULDQWHV GH OLVWHV SUpVHQWpHV MXVTX¶DX LFL
V¶HIIHFWXHGDQVXQVHXOVHQV3DUH[HPSOHpWDQWGRQQpTXHQRXVDYRQVDFFpGpjXQHFHOOXOH
SRXUODVXSSULPHULOHVWLPSpUDWLYHPHQWLPSRVVLEOHGHVDYRLUO¶DGUHVVHGHODFHOOXOHTXLODSUp
FqGH VDXI VL RQ D VDXYHJDUGp VRQ DGUHVVH DXSDUDYDQW SDU H[HPSOH OD YDULDEOH ݈݁ܿܽFRQ
WLHQQH O¶DGUHVVH GH OD FHOOXOH SUpFpGHQWH GDQV OHV DOJRULWKPHV GH VXSSUHVVLRQ GDQV OHV OLVWHV
VLPSOHPHQWFKDvQpHV
/ #&
#& #& #& #&
3RXU XQH PDQLSXODWLRQ SOXV VRXSOH LO H[LVWH DXVVL G¶DXWUHV YDULDQWHV GH OLVWHV FKDvQpHV GLWHV
ELGLUHFWLRQQHOOHV RX GRXEOHPHQW FKDvQpHV TXL SHXYHQW rWUH SDUFRXUXHV GDQV OHV GHX[ VHQV
GHODSUHPLqUHFHOOXOHMXVTX¶jODGHUQLqUHFHOOXOHHWLQYHUVHPHQW
5HSUpVHQWDWLRQGHVOLVWHVGRXEOHPHQWFKDLQpHV
/DVWUXFWXUHGHODFHOOXOHXWLOLVpHGDQVOHVOLVWHVFKDvQpHVELGLUHFWLRQQHOOHVGRLWrWUHGRQFFRP
SRVpHGH
x 8QFKDPSSRXUOHܿݑ݊݁ݐ݊
x 8QSRLQWHXUݐ݊ܽݒ݅ݑݏTXLFRQWLHQWO DGUHVVHGHODFHOOXOHVXLYDQWHGDQVODOLVWH
x 8QSRLQWHXUݐ݊݁݀݁ܿ݁ݎTXLFRQWLHQWO DGUHVVHGHFHOOXOHSUpFpGHQWHGDQVODOLVWH
/DVWUXFWXUHGHFHOOXOHGDQVXQHOLVWHGRXEOHPHQWFKDvQpHHVWGpILQLHSDU
typedefintelement;
typedefstructCellule{
elementcontenu;
structCellule*precedent;
structCellule*suivant;}Cellule;
typedefstructCellule*liste_Db_Ch;
+7(**$5
Chapitre 4 Les structures séquentielles
/HVRSpUDWLRQVVXUOHVOLVWHVGRXEOHPHQWFKDvQpHV
2SpUDWLRQ ࢙ࢋ࢘ࢋ࢘ࡱࢀࢋ࢚ࢋሺ࢙࢚ࢋ̴ࡰ࢈̴ࢎ כǡ ࢋࢋࢋ࢚ࢋሻ SURFpGXUH TXL SHUPHW GH FUpHU XQH FHO
OXOHFRQWHQDQWO¶pOpPHQW݁/¶LQVHUWLRQDXUDOLHXDXGpEXWGHODOLVWH
voidinsererEnTete(liste_Db_Ch*L,elemente){
Cellule*place;
place=malloc(sizeof(Cellule));
placeŞ>contenu=e;
placeŞ>precedent=NULL;
placeŞ>suivant=NULL;
if(*L!=NULL){//listenonvide
(*L)Ş>precedent=place;
placeŞ>suivant=*L;
}
*L=place;//nouvelletete
}
2SpUDWLRQࢇ࢛࢚ࢋ࢘ሺ࢙࢚ࢋ̴ࡰ࢈̴ࢎ כǡ ࢋࢋࢋ࢚ࢋǡ ࢚࢙ሻIRQFWLRQTXLSHUPHWODFUpDWLRQG\QD
PLTXH G¶XQH FHOOXOH FRQWHQDQW O¶pOpPHQW ݁ /D IRQFWLRQ UpDOLVH OD FUpDWLRQ HW O¶LQVHUWLRQ G¶XQH
FHOOXOHGDQVXQHOLVWHGRXEOHPHQWFKDvQpHVDXIVLODSRVLWLRQHVWYDOLGHGDQVFHFDVHOOHUHQYRLH
VLQRQHOOHUHYRLH&HWWHIRQFWLRQQHIDLWSDVDSSHOjODIRQFWLRQ݈ݎݑ݁ݑ݃݊ሺሻǤ
+7(**$5
Chapitre 4 Les structures séquentielles
intajouter(liste_Db_Ch*L,elemente,intpos){
inti=1;
Cellule*place;
Cellule*n;
if(pos<1){ printf("positioninvalide!");
return0;}
if(pos==1){ insererEnTete(L,e);
return1;}
place=*L;
while(place!=NULL&&i<posŞ1){
place=placeŞ>suivant;
i=i+1;}
if(place==NULL){ printf("positioninvalide!");
return0;}
n=malloc(sizeof(Cellule));
nŞ>contenu=e;
nŞ>suivant=placeŞ>suivant;
nŞ>precedent=place;
if(placeŞ>suivant!=NULL)placeŞ>suivantŞ>precedent=n;
placeŞ>suivant=n;
return1;
}
2SpUDWLRQ ࢙࢛࢘ࢋ࢘ሺ࢙࢚ࢋ̴ࡰ࢈̴ࢎ כǡ ࢚࢙ሻ 'DQV XQH OLVWH GRXEOHPHQW FKDvQpH VL ݏ
HVWXQHSRVLWLRQYDOLGHFHWWHIRQFWLRQVXSSULPHODFHOOXOHTXLVHWURXYHjODSRVLWLRQݏHWHOOH
UHQYRLHVLQRQ
intsupprimer(liste_Db_Ch*L,intpos) {
inti=1;
Cellule*place;
Cellule*n;
if(pos<1){ printf("positioninvalide!");
return0;}
if(*L==NULL){ printf("listevide!");
return0;}
if(pos==1){ place=*L;
*L=(*L)Ş>suivant;
if((*L)!=NULL)
(*L)Ş>precedent=NULL;
free(place);
return1;}
place=*L;
while(place!=NULL&&i<pos){
if(placeŞ>suivant==NULL){
printf("positioninvalide!\n");
return0;}
place=placeŞ>suivant;
i=i+1;
}
placeŞ>precedentŞ>suivant=placeŞ>suivant;
+7(**$5
Chapitre 4 Les structures séquentielles
if(placeŞ>suivant!=NULL)
placeŞ>suivantŞ>precedent=placeŞ>precedent;
free(place);
return1;
}
/HVYDULDQWHVGHVOLVWHVGRXEOHPHQWVFKDvQpHV
&RPPHOHVOLVWHVVLPSOHPHQWFKDvQpHVRQSHXWGpILQLUOHVYDULDQWHVGHVOLVWHVELGLUHFWLRQQHOOHV
DYHFOHEORFሺܶ²݁ݐǡ ܳ݁ݑ݁ݑǡ ݈ݎݑ݁ݑ݃݊ሻHWG¶DXWUHVFLUFXODLUHVGRXEOHPHQWFKDvQpHV
/HVSLOHV
/HV SLOHV VRQW XQH DXWUH YDULDQWH GH OLVWHV GDQV OHVTXHOOHV OHV RSpUDWLRQV G¶DGMRQFWLRQ HW GH
VXSSUHVVLRQVVHIRQWjXQHVHXOHH[WUpPLWpDSSHOpHVRPPHWGHSLOH/HVSLOHVVRQWDXVVLDSSH
OpHV/,)2SRXU/DVW,Q)LUVWXWFµHVWjGLUHGHUQLHUHQWUpSUHPLHUVRUWLXQERQH[HPSOHSRXU
LOOXVWUHUXQHSLOHHVWG¶LPDJLQHUXQHSLOHG¶DVVLHWWHVF¶HVWHQKDXWGHODSLOHTX¶LOIDXWSUHQGUHRX
PHWWUHXQHDVVLHWWH
'pILQLWLRQIRUPHOOHVGHVSLOHV
8QHSLOHɏHVWXQHVXLWHILQLHpYHQWXHOOHPHQWYLGHG¶pOpPHQWVUHSpUpVVHORQOHXUUDQJGDQVOD
OLVWHɏ ൌ൏ ଵ ǡ ଶ ǡ Ǥ Ǥ ǡ ୬ /HVRSpUDWLRQVVXUOHVSLOHVVRQW
x WHVWHUVLXQHSLOHHVWYLGH
x DFFpGHUDXVRPPHWG¶XQHSLOH
x HPSLOHUXQpOpPHQW
x UHWLUHUO¶pOpPHQWTXLVHWURXYHDXVRPPHW GpSLOHU
/DVLJQDWXUHGXW\SHDEVWUDLW݈ܲ݅݁HVWGRQQpHFRPPHVXLW
7\SH݈ܲ݅݁
3URWRW\SHV
ܸ݈݈݁݀݅݁݅݁݅ሺሻǢ
ݎ݈݈݁݉݁݁݅ሺ݈ܲ݅݁ǡ ݈݁݁݉݁݊ݐሻǢ
݈݀݁݅±ݎ݈݁݅ሺ݈ܲ݅݁ሻǢ
݈݁݁݉݁݊ݐ݁݉݉ݏݐሺ݈ܲ݅݁ሻǢ
ܾܸ݁݀݅ݐݏ݈݁݊ܽ݁ሺ݈ܲ݅݁ሻǢ
3UpFRQGLWLRQV
+7(**$5
Chapitre 4 Les structures séquentielles
/HVRSpUDWLRQV݀±ݎ݈݁݅HW ݐ݁݉݉ݏQHVRQWGpILQLHVTXHVLODSLOHQµHVWSDVYLGH
݀±ݎ݈݁݅ሺሻHVWGpILQLHVLHVWVHXOHPHQWVLܸ݁݁݀݅ݐݏሺሻ ൌ ݂ܽݔݑ
ݐ݁݉݉ݏሺሻHVWGpILQLHVLHVWVHXOHPHQWܸ݁݁݀݅ݐݏሺሻ ൌ ݂ܽݔݑ
$[LRPHV
&HVRSpUDWLRQVYpULILHQWOHVD[LRPHVVXLYDQWVRHVWGHW\SH݈݁݅HW݁GHW\SH݈݁݁݉݁݊ݐ
5HSUpVHQWDWLRQFKDvQpHG¶XQHSLOH
3RXULPSOpPHQWHUOHVSLOHVRQSHXWXWLOLVHUWRXWHVOHVUHSUpVHQWDWLRQVpWXGLpHVSUpFpGHPPHQW
SRXUOHVOLVWHV1RXVFKRLVLVVRQVLFLXQHUHSUpVHQWDWLRQFKDvQpHWHOOHTXHOHVpOpPHQWVVHURQW
HQFDSVXOpVGDQVGHVFHOOXOHVTXLVRQWFKDvQpHVHQWUHHOOHV/HVRPPHWG¶XQHSLOHQRQYLGHHVW
ODSUHPLqUHFHOOXOHGHODOLVWHODSLOHYLGHHVWUHSUpVHQWpHSDUܷܰܮܮ2QDGRQFOHVVWUXFWXUHVGH
GRQQpHVVXLYDQWHV
typedefintelement;
typedefstructCellule*pile;
typedefstructCellule{
elementval;
pilesuivant;}Cellule;
1RXVGpILQLVVRQVDXVVLXQHIRQFWLRQTXLSHUPHWGHFUpHUXQHFHOOXOHFRPPHVXLW
Cellule*creeCellule(elemente){
pilel;
l=malloc(sizeof(Cellule));
lŞ>val=e;
lŞ>suivant=NULL;
returnl;
}
(WO¶REVHUYDWHXUܸ݁݁݀݅ݐݏሺሻFRPPHVXLW
intestVide(pilep){
returnp==NULL;
}
+7(**$5
Chapitre 4 Les structures séquentielles
/¶RSpUDWLRQG¶HPSLOHPHQWG¶XQpOpPHQW
/D SURFpGXUH ݁݉ݎ݈݁݅ሺሻ SUHQG HQ DUJXPHQW XQ pOpPHQW ݁ HW O¶DGUHVVH GX SRLQWHXU GH OD SUH
PLqUHFHOOXOHGHODSLOH&HWWHSURFpGXUHQ¶DDXFXQHSUpFRQGLWLRQHWHOOHYDFUpHUGLUHFWHPHQW
XQHFHOOXOHSRXUO¶pOpPHQW݁SXLVHOOHLQVqUHFHWWHFHOOXOHHQWrWHGHODSLOHHQUHQYR\DQWODYD
OHXU
voidempiler(elemente,pile*p){
Cellule*c;
c=creeCellule(e);
cŞ>suivant=*p;
*p=c;
}
/¶RSpUDWLRQGHGpSLOHPHQWG¶XQpOpPHQW
/DIRQFWLRQ݀±ݎ݈݁݅ሺሻUHQYRLHVLODSLOHHVWYLGH3XLVTXHFHWWHIRQFWLRQPRGLILHODVWUXFWXUH
GHODOLVWHOHSDUDPqWUH כUHSUpVHQWHO¶DGUHVVHGXSRLQWHXUGHODSUHPLqUHFHOOXOH SDVVDJHSDU
DGUHVVH
intdepiler(pile*p){
if(estVide(*p)){ printf("Pilevide!\n");
return0;}
Cellule*c=*p;
(*p)=(*p)Ş>suivant;
free(c);
return1;
}
/¶RSpUDWLRQGHUpFXSpUDWLRQG¶XQpOpPHQWHQVRPPHWGHSLOH
/DIRQFWLRQ ݐ݁݉݉ݏYpULILHG¶DERUGVLODSLOHHVWYLGHVLF¶HVWOHFDVHOOHUHQYRLHVLQRQHOOH
UpFXSqUHO¶pOpPHQWHQVRPPHWGHODSLOHHQOHPHWWDQWGDQVXQHYDULDEOHGRQWVRQDGUHVVH݁ כ
SDVVpHHQDUJXPHQWSXLVHOOHUHQYRLH
intsommet(pilep,element*e){
if(estVide(p)){ printf("Pilevide!\n");
e=NULL;
return0;}
*e=pŞ>val;
return1;
}
/HVILOHV
'DQVOHFDVG¶XQHILOHRQIDLWOHVDGMRQFWLRQVjXQHH[WUpPLWpOHVDFFqVHWOHVVXSSUHVVLRQVj
O¶DXWUHH[WUpPLWp3DUDQDORJLHDYHFOHVILOHVG¶DWWHQWHRQGLWTXHO¶pOpPHQWSUpVHQWGHSXLVOHSOXV
ORQJWHPSVHVWOHSUHPLHURQGLWDXVVLTX¶LOHVWHQWrWH/HVILOHVVRQWDXVVLDSSHOpH),)2SRXU
+7(**$5
Chapitre 4 Les structures séquentielles
x $FFpGHUDXSUHPLHUpOpPHQWGHODILOH
x DMRXWHUXQpOpPHQWGDQVODILOH
x UHWLUHUOHSUHPLHUpOpPHQWGHODILOH
7\SH݈݁݅ܨ
3URWRW\SHV
ܸ݈݂݈݁݀݅݁݅݁݅ܨሺሻǢ
ݎ݈݂݈݁݅݊݁݁݅ܨሺ݈݁݅ܨǡ ݈݁݁݉݁݊ݐሻǢ
ݎ݁ݎ݅ݐ݁ݎ݈݁݅ܨሺ݈݁݅ܨሻǢ
݈݁݁݉݁݊ݎ݁݅݉݁ݎݐሺ݈݁݅ܨሻǢ
ܾܸ݁݀݅ݐݏ݈݁݊ܽ݁ሺ݈݁݅ܨሻǢ
3UpFRQGLWLRQ
/HVRSpUDWLRQ ݎ݁ݎ݅ݐ݁ݎVHWݎ݁݅݉݁ݎQHVRQWGpILQLHVTXHVLODILOHQ¶HVWSDVYLGH
ݎ݁ݎ݅ݐ݁ݎሺ݂ሻHVWGpILQLHVLHVWVHXOHPHQWVLܸ݁݁݀݅ݐݏሺ݂ሻ ൌ ݂ܽݔݑ
ݎ݁݅݉݁ݎሺ݂ሻHVWGpILQLHVLHVWVHXOHPHQWܸ݁݁݀݅ݐݏሺ݂ሻ ൌ ݂ܽݔݑ
$[LRPHV
&HVRSpUDWLRQVYpULILHQWOHVD[LRPHVVXLYDQWVR݂HVWGHW\SH݂݈݅݁HW݁GHW\SH݈݁݁݉݁݊ݐ
'¶DXWUHSDUWO¶RSpUDWLRQܸ݁݁݀݅ݐݏYpULILH
ܸ݁݁݀݅ݐݏሺ݂݈ܸ݅݁݅݀݁ሺሻሻ ൌ ݅ܽݎݒ
ܸ݁݁݀݅ݐݏሺ݂݈݁݊݅݁ݎሺ݂ǡ ݁ሻሻ ൌ ݂ܽݔݑ
ܸ݁݁݀݅ݐݏሺݒሻ ൌ ݎ݁݅݉݁ݎ ฺ ݅ܽݎݒ൫݂݈݁݊݅݁ݎሺ݂ǡ ݁ሻ൯ ൌ ݁
ܸ݁݁݀݅ݐݏሺݒሻ ൌ ݂ܽݎ݁݅݉݁ݎ ฺ ݔݑ൫݂݈݁݊݅݁ݎሺ݂ǡ ݁ሻ൯ ൌ ݎ݁݅݉݁ݎሺ݂ሻ
ܸ݁݁݀݅ݐݏሺݒሻ ൌ ݎ݁ݎ݅ݐ݁ݎ ฺ ݅ܽݎݒ൫݂݈݁݊݅݁ݎሺ݂ǡ ݁ሻ൯ ൌ ݂݈ܸ݅݁݅݀݁
ܸ݁݁݀݅ݐݏሺݒሻ ൌ ݂ܽݎ݁ݎ݅ݐ݁ݎ ฺ ݔݑ൫݂݈݁݊݅݁ݎሺ݂ǡ ݁ሻ൯ ൌ ݂݈݁݊݅݁ݎሺݎ݁ݎ݅ݐ݁ݎሺ݂ሻǡ ݁ሻ
5HSUpVHQWDWLRQG¶XQHILOH
2QSHXWSUpVHQWHUOHVILOHVGHPDQLqUHFRQWLJHRXGHPDQLqUHFKDvQpH'DQVFHTXLVXLWQRXV
DOORQVFKRLVLUXQHUHSUpVHQWDWLRQFKDvQpH
3XLVTXHOHVGHX[RSpUDWLRQVݎ݁ݎ݅ݐ݁ݎHW݂݈݁݊݅݁ݎRSqUHQWVXUOHVH[WUpPLWpVRSSRVpHVGHODILOH
QRXV SRXYRQV GRQF FKRLVLU VRLW OD VWUXFWXUH G¶XQH OLVWH DYHF OH SORF ݐ² ݁ݐHW ݁ݑ݁ݑݍVRLW XQH
+7(**$5
Chapitre 4 Les structures séquentielles
OLVWH FLUFXODLUH 3RXU XQH OLVWH FLUFXODLUH QRXV GpILQLURQV OHV VWUXFWXUHV GH GRQQpHV VXLYDQWHV
SRXUODUHSUpVHQWDWLRQGHVILOHV
Typedefintelement;
typedefstructCellule{
elementcontenu;
structCellule*suivant;}Cellule;
typedefstructCellule*File;
/¶RSpUDWLRQG¶HQILOHPHQWG¶XQpOpPHQW
/DSURFpGXUH݂݈݁݊݅݁ݎሺሻSUHQGHQDUJXPHQWXQpOpPHQW݁HWO¶DGUHVVHGXSRLQWHXUGHODSUHPLqUH
FHOOXOHGHODILOH&HWWHSURFpGXUHQ¶DDXFXQHSUpFRQGLWLRQ2QSUHQGQRWHTXHGDQVOHFDVROD
ILOHHVWYLGHO¶pOpPHQWQRXYHOOHPHQWLQVpUpHVWFRQVLGpUpFRPPHOHSUHPLHUHWOHGHUQLHUGDQV
ODILOH'DQVFHFDVOHFKDPSݐ݊ܽݒ݅ݑݏGHODFHOOXOHTXHQRXVYRXORQVLQVpUHUSRLQWHYHUVFHWWH
PrPHFHOOXOH'DQVOHFDVJpQpUDOOHSRLQWHXU݂ כUHSUpVHQWHO¶DGUHVVHGXSRLQWHXUGHODGHU
QLqUH FHOOXOH GDQV OD ILOH HW QRQ SDV OH SUHPLHU HW SXLVTXH O¶LQVHUWLRQ V¶HIIHFWXH j OD ILQ GH OD
OLVWHFHSRLQWHXUVHUDGRQFPRGLILpSRXUTX¶LOGHYLHQWXQSRLQWHXUYHUVODQRXYHOOHFHOOXOHLQVp
UpH
Voidenfiler(File*f,elemente){
Cellule*c;
c=malloc(sizeof(Cellule));
cŞ>contenu=e;
if(*f==NULL)cŞ>suivant=c;//casd’unefilevide
else{cŞ>suivant=(*f)Ş>suivant;
(*f)Ş>suivant=c;}
*f=c;
}
/¶RSpUDWLRQUHWLUHUXQpOpPHQW
2SpUDWLRQGHUpFXSpUDWLRQG¶XQpOpPHQW
/DIRQFWLRQݎ݁݅݉݁ݎሺሻYpULILHG¶DERUGVLODILOH݂HVWYLGHVLF¶HVWOHFDVHOOHUHQYRLHVLQRQHOOH
UpFXSqUHO¶pOpPHQWHQHQWrWHGHOLVWH LFLF¶HVWO¶pOpPHQWGHODFHOOXOHVXLYDQWHGH݂ HQOHPHW
WDQWGDQVXQHYDULDEOHGRQWVRQDGUHVVH݁ כHVWSDVVpHHQDUJXPHQWSXLVHOOHUHQYRLH
Intpremier(Filef,element*e){
if(f==NULL){printf(“Filevide!\n”);
return0;}
*e=fŞ>suivantŞ>contenu;
return1;
}
+7(**$5