/** * Ajoute/modifie/efface un noeud de la liste des voisins * @param n Le noeud a utiliser * @param weight Le poids de la connection (-1 = deconnecte) */ void Node::AddConnection(Node &n, int weight) { //on cherche le noeud dans la liste des voisins int id = SearchID(n.GetID()); //Si le noeud n'est pas dans la liste des voisins et le poids >= 0 //On ajoute le noeud dans la liste des voisins ave le poids if(id <= -1 && weight > -1) { linkedNeighbors.push_back(n.GetID()); linkedWeights.push_back(weight); nbNeighbors++; } //Si le noeud est dans la liste des voisins et le poids est -1 ( deconnecte)) //On enleve le noeud de la liste des voisins et des poids voisins else if(id > -1 && weight <= -1) { linkedNeighbors.erase(linkedNeighbors.begin()+id); linkedWeights.erase(linkedWeights.begin()+id); nbNeighbors--; } //Si le noeud est dans la liste des voisins et le poid >=0 //On ajuste le poids avec le voisins else if(id > -1 && weight > -1) { linkedWeights[id] = weight; } }
void main() { struct student *head,stud,*p; printf("Input the students' records:\n"); head=CreatLink(); PrintLink(head); printf("\nInput the inserted record:"); scanf("%ld,%f,%s",&stud.num,&stud.score,stud.name); head=InsertNode(head,&stud); PrintLink(head); p=SearchID(head); if(p!=NULL) { printf("\nThe student's record:%ld,%.1f,%s\n",p->num,p->score,p->name); } DeleteNode(head); PrintLink(head); DeleteLink(head); }