Trie liste de saisit sans passer par une insertion
Nexouille
Messages postés5Date d'inscriptiondimanche 28 avril 2002StatutMembreDernière intervention 2 juin 2002
-
1 juin 2002 à 12:26
Nexouille
Messages postés5Date d'inscriptiondimanche 28 avril 2002StatutMembreDernière intervention 2 juin 2002
-
2 juin 2002 à 12:23
Voila je dois a partir d'un fichier prendre toute les ip qui s'y trouve dont on ne connait pas le nombre et je dois compter combien de fois elles apparaisent.Je dois comparer l'ip avec la date ,si l'ip est apparut avant 3min ,l'ip ne doit pas etre compter donc je ne peux pas trier en inserant un élément mon probleme est comment faire alors pour trier les IP.
//voila les structure que j'utilise
struct Date //structure dont on a besoin dans la structure requete
{
char Periode[12];
int Heure;
int Minute;
int Seconde;
char Jour[9];
};
struct adresse
{
int AdresseIP[4]; //taille maximum d'une adresse ip
Date Daterequette;
struct adresse *suiv; //liste chain‚e
};
typedef adresse *Requette;
**********************************************************
Fonction de saisit des donnees a partir d'un fichier log
void saisitIP(char fichier[],Requette *debut)
{
fgets(Visite->Daterequette.Periode,12,logfile); //on scanne la date
Visite->suiv=*debut;
*debut=Visite;
}
fclose(logfile);
}
//fonction qui compare si la liste est trié
Ben elle est crée est marche si la liste est triée
Voila j'aimerais savoir comment je peux trier les ip pour les ranger dans l'ordre croissant car j'ai aussi une fonctin qui affiche et qui compte ainsi les ip en prenant en compte la durée de 3Min mais je sais pas comment faire pour les trier. Je pensais les inserer et les classer comme ca mais je suis embete a cause de la prise en compte de la duree de visite (si <3min alors faut pas compter) donc je pense trie la liste apres toute la saisit mais comment faire ca sans passer par des tableaux vue qu'on ne connait pas le nombre d'ip.
Je met pas tout mon programme vu que c'est un projet qu'on a a rendre pas envie de me le faire pomper ^^
Merci
A voir également:
Trie liste de saisit sans passer par une insertion
fced42
Messages postés31Date d'inscriptiondimanche 30 décembre 2001StatutMembreDernière intervention 3 septembre 2003 2 juin 2002 à 10:55
Moi personnelement, j'utiliserais une liste chaine pour represente ta liste triée. Pour ajouter une ip dans ta liste(tu prend que celle dont <3min), il faut faire une recherche. tu t'arretes lorsque tu es arrivé a la fin de ta liste, ou lorsque ton ip a inserer est inferieur a l'element courant. Mais pour que tu puisse l'inserer, il faut que tu retiennes le predecesseur. En algo ca donnerais :
ins = ton adresseIp a insere
a,p,b : des adresses
a <- la tete de ta liste
p <- nil
tantque a /= nil et ins > a.adresseIp faire
p <- a
a <- a.suiv
fintantque
allouer(b)
b->adresseIP = ins
selon p
p = nil : {tu inseres en tete}
b.suiv = nil
tete de liste = b
p /= nil : {tu insere avec le predecesseur}
b->suiv = p->suiv
p.suiv = b
finselon
Voila, j'espere que j'ai ete clair et que j'ai pas fais trop de fautes. Si t'as du mal a comprendre dis le moi, je t'expliquerai mieux.