Um dos tipos de estruturas de dados amplamente usados hoje em dia na programação de aplicativos é a pilha. Sua peculiaridade é o princípio de organização dos elementos, em que sua adição e remoção são possíveis apenas um de cada vez e somente através do "topo", ou seja, de acordo com o princípio UEPS. Mas às vezes é necessário limpar toda a pilha de uma vez.
Necessário
- - editor de texto ou IDE;
- - um tradutor da linguagem de programação usada.
Instruções
Passo 1
Use métodos nos objetos da pilha que são projetados especificamente para limpar a pilha. Eles estão presentes na maioria das classes correspondentes de várias bibliotecas e estruturas. Por exemplo, a classe. NET Stack tem um método Clear. Um exemplo de sua aplicação em C # pode ser assim:
Pilha oStack = nova pilha (); // cria um objeto de pilha
oStack. Push ("000"); // preencher a pilha
oStack. Push ("111");
oStack. Clear (); // limpar a pilha
Passo 2
Métodos para alterar o número de elementos de classes de contêiner, nos quais a funcionalidade de classes de pilha é freqüentemente construída, também podem ser usados para limpeza. Você só precisa reduzir o número atual de elementos para zero. Por exemplo, a classe de modelo Qt QStack herda da classe de modelo QVector, que possui um método de redimensionamento. Um exemplo de seu uso poderia ser assim:
QStack oStack; // declaração do objeto da pilha
para (int i = 0; i <10; i ++) oStack.push (i); // preencher a pilha
oStack.resize (0); // limpar a pilha
etapa 3
A limpeza de um objeto de pilha geralmente pode ser feita por meio do operador de atribuição, que geralmente é implementado nas classes correspondentes. Para fazer isso, o objeto da pilha a ser limpo deve ser atribuído a um objeto temporário criado pelo construtor padrão. Por exemplo, a classe modelada de pilha da Biblioteca Padrão C ++, que é um adaptador para classes modeladas de contêiner, não possui métodos para alterar arbitrariamente o número ou remover todos os elementos. Você pode limpar assim:
std:: stack <int, std:: list> oStack; // declaração do objeto da pilha
para (int i = 0; i <10; i ++) oStack.push (i); // preencher a pilha
oStack = std:: stack
Passo 4
Limpe o objeto da pilha chamando o construtor de cópia usando o operador new com um argumento de objeto criado pelo construtor padrão:
std:: stack <int, std:: list> oStack; // declaração do objeto da pilha
para (int i = 0; i <10; i ++) oStack.push (i); // preencher a pilha
novo std:: stack
Etapa 5
A pilha pode ser limpa recuperando sequencialmente todos os elementos usando os métodos apropriados:
std:: stack <int, std:: list> oStack; // declaração do objeto da pilha
para (int i = 0; i <10; i ++) oStack.push (i); // preencher a pilha
while (! oStack.empty ()) oStack.pop (); // limpar a pilha
No entanto, essa abordagem tem uma complexidade de tempo que depende linearmente do número de elementos na pilha. Portanto, seu uso não é racional.