void ASInsert (tASTable *Tab, int Key, int Content) { /* Vlo¾í novou polo¾ku s obsahem Content a klíèem Key do tabulky Tab. ** ** Pokud by vlo¾ením dal¹í polo¾ky do¹lo k pøeplnìní Tab (pokud by ne¹lo ** pøi dal¹ím vyhledávání ulo¾it zará¾ku), volejte proceduru ASError() ** a novou polo¾ku nevkládejte. ** ** Pokud daná polo¾ka (udaná klíèem Key) v poli ji¾ existuje, pøiøadí se do ** odpovídající slo¾ky záznamu nový obsah. Pøi vyhledávání ji¾ existující ** polo¾ky vyu¾ijte døíve implementovanou funkci ASSearch (to znamená, ¾e se ** existující a modifikovaná polo¾ka automaticky posune dopøedu). */ int index; //Pomocná promìnná pro vkládání if (ASSearch(Tab, Key, &index)) { //Pokud u¾ je v poli polo¾ka s klíèem Key, Tab->arr[index].Cont = Content; //nastaví se jí nový obsah } else { //Pokud v poli polo¾ka s klíèem Key je¹tì není if ((Tab->last + 1) <= (ASSize - 2)) { //a pokud není tabulka plná, Tab->arr[Tab->last + 1].Key = Key; //vlo¾ím na dal¹í pozici klíè Key Tab->arr[Tab->last + 1].Cont = Content; //a vlo¾ím obsah dal¹í pozice Tab->last = Tab->last + 1; //Musím zvý¹it index posledního prvku o 1 } else { //Pokud je tabulka plná, ASError(); //zavolám funkci ASError() } } }
int test_ASSearch (tASTable *TempTable, int Content, int *ind) { solved=TRUE; int found; ASCompNum = 0; found = ASSearch(TempTable, Content, ind); if (!solved) { printf("Operace ASSearch() nebyla implementovana \n"); return(FALSE); } else { PrintElement(TempTable); printf("Hodnota nalezena: "); if (found) printf("ANO\n"); else printf("NE\n"); printf("Index vr�cen: %d\n", *ind); printf("Po�et proveden�ch porovn�n�: %d\n", ASCompNum); printf("=========================================================\n"); ASCompNum = 0; return(TRUE); } }