void apagar_lista(LISTA_LIGADA **lista) { if(lista != NULL && *lista != NULL) { NO *prem = (*lista)->sentinela->proximo; NO *paux = NULL; while(paux != (*lista)->sentinela) { paux = prem->proximo; apagar_no(prem); prem = paux; } free(*lista); *lista = NULL; } }
int remover_item(LISTA_LIGADA *lista, int chave) { if(lista != NULL) { if(!vazia(lista)) { NO *paux = lista->sentinela; while(paux->proximo->item->chave != chave) { paux = paux->proximo; } if(paux != lista->sentinela) { NO *prem = paux->proximo; paux->proximo = prem->proximo; if(prem == lista->fim) lista->fim = paux; apagar_no(prem); lista->tamanho--; return 1; } } } return 0; }
void apagar_linha(ptr_no linha) /*Apagar qualquer linha*/ { remove_grandes(linha->acima); /* Apagar as pecas da linha de cima que ocupem a que vamos apagar*/ apaga_lista(linha->lista_pecas); /* apagar a lista de pecas da linha a apagar*/ top = apagar_no(linha,top); /*Apaga a linha*/ }