void list_delete_all(list *listo) { int i; for(i=listo->item_count-1; i>=0; i--) list_delete_index(listo, i); }
void list_delete_item(list *listo, void *item) { int i; for(i=0; i < listo->item_count; i++) { if( listo->items[i] == item ) list_delete_index(listo, i); } }
void list_delete_name(list *listo, char *name) { int i; //int j; //char remove = 0; // int length_name = strlen(name); int item_name; if(name == NULL) return; for(i=0; i < listo->item_count; i++) { item_name = strlen(name); if( name != NULL && (strncmp(listo->names[i], name, strlen(name)) == 0) ) list_delete_index(listo, i); } }
/* редактор списка структур */ void list_edit(LPLIST lpList) { int ItemIndex = -1; /* текущий индекс элемента */ LPITEM lpItem = 0; /* выбранный элемент */ if (lpList->Count > 0) ItemIndex = 0; /* цикл */ while (1) { clrscr(); /* заголовок */ printf("Edit List [Count = %d] [Max Count = %d] ", lpList->Count, BUFF_SIZE); if (ItemIndex < 0) printf("[no selected]\n"); else printf("[Current elem = %d]\n", ItemIndex); separator(); /* клавиши управления */ printf("q - exit\n"); printf("a - add\n"); printf("d - delete\n"); printf("e - edit\n"); printf("l - print list\n"); printf("s = sorter\n"); printf("c - clear list\n"); printf("f - find item\n"); printf("b - back elem\tn - next elem\n\n"); if (ItemIndex >= 0) { table_head(); item_out(&lpList->Items[ItemIndex]); } separator(); /* обработка клавиш */ switch (getch()) { case 'c': /* очистка списка */ list_clear(lpList); ItemIndex = -1; break; case 'b': /* переход на предыдущий элемент */ if (ItemIndex > 0) ItemIndex--; break; case 'n': /* переход на следующий элемент */ if (ItemIndex < lpList->Count - 1) ItemIndex++; break; case 's': sort_mode(lpList); list_out(lpList); printf("\npress any key to back menu"); getch(); break; case 'f': ItemIndex = find_mode(lpList); break; case 'd': if (ItemIndex >= 0) { list_delete_index(lpList, ItemIndex); if (ItemIndex >= lpList->Count) ItemIndex = lpList->Count - 1; } break; case 'e': if (ItemIndex >= 0) { item_edit(&lpList->Items[ItemIndex]); } break; case 'a': /* добавление элемента в список */ lpItem = list_find_empty(lpList); /* поиск пустой структуры в списке */ if (lpItem) { lpList->Count++; item_in(lpItem); ItemIndex = list_index_of(lpList, lpItem); } else printf("no empty element!"); break; case 'l': /* отображаем список в виде таблицы */ list_out(lpList); printf("\npress any key to back menu"); getch(); break; case 'q': /* выход из программы */ exit(1); break; } } }
/* удаление элемента из списка */ void list_delete(LPLIST lpList, LPITEM lpItem) { int i = list_index_of(lpList, lpItem); if (i >= 0) list_delete_index(lpList, i); }