/*!\en * Delets group with child elements and groups. * \param idg (in) - id deleted group. * \param listDelId (in,out) - list of id deleted elements and groups. \_en \ru * Физически удаляет группу со всеми ее дочерними элементами и группами. * \param idg (in) - идентификационный номер выделенной для удаления группы. * \param listDelId (in,out) - список идентификационных номеров выделенных для удаления элементов и групп. *\_ru */ qulonglong aCatalogue::delGroup(qulonglong idg, Q3ValueList<qulonglong> &listDelId) { aSQLTable * tg = table ( md_group ); if ( !tg ) return 0; //if ( !selected( md_group ) ) return err_notselected; qulonglong tmp;// idg = tg->sysValue("id").toULongLong(); groupSelect(idg); if ( idg ) { aLog::print(aLog::Info,tr("aCatalogue delete group with id=%1").arg(idg)); // printf("idg=" LLU_SPEC "\n",idg); // delete elements in group; while(selectByGroup(idg)==err_noerror) { listDelId << delElement(); } while (groupByParent(idg)==err_noerror) { delGroup(GroupSysValue("id").toULongLong(), listDelId); //printf(">>>idg=%lu\n",tmp); } } tg->select(QString("id=%1").arg(idg),false); if(tg->first()) { tg->primeDelete(); tg->del(); listDelId << idg; setSelected( false, md_group ); } return idg; }
void delElement(Tree *&tr, int x) { if (!tr) printf("NO\n"); else if (x < tr->value) delElement(tr->left, x); else if (x > tr->value) delElement(tr->right, x); else { Tree *tmp = tr; if (!tr->right) tr = tr->left; else if (!tr->left) tr = tr->right; else { Tree *v = tr->left; if (v->right) { while (v->right->right) v = v->right; tr->value = v->right->value; tmp = v->right; v->right = v->right->left; } else { tr->value = v->value; tmp = v; tr->left=tr->left->left; } } delete(tmp); } }
void removeElmnt(int input[], int n){ int i=0,j=0; while(i<n){ j=i+1; while(j<n){ if(input[i] == input[j]){ delElement(input,j,n); n--; } j++; } i++; } }