// Class CFifo, gestion d'une liste en fifo #include #include #include "fifo.h" // gestion d'une pile classée en valeur croissantes // typiquement reprend les coordonnées les plus proches // du but en premier lieu CPileTriee::CPileTriee(Sint32 taille) { m_taille = taille; m_max = m_out = 0; m_data = (Element*) malloc (sizeof(Element)*taille); } CPileTriee::~CPileTriee() { free( m_data ); } Sint32 CPileTriee::get() { if (m_out == m_max) return -1; Sint32 val = m_data [m_out].pos; m_out++; if (m_out>=m_taille) m_out = 0; return val; } void CPileTriee::put(Sint32 pos, Sint32 dist) { Sint32 i=m_out; Sint32 p,d,m; while (i!=m_max) { // le point est-il plus proche que celui-là ? if (dist=m_taille) i=0; } // ajoute le point éloigné à la suite m = m_max+1; if (m>=m_taille) m=0; if (m!=m_out) { m_data[m_max].pos = pos; m_data[m_max].dist = dist; m_max = m; } }