Se alguém tiver qualquer código que adiciona, lista, altera e apaga objetos de uma classe sem utilizar retorno, agradeceria.
 
	Caso contrário, gostaria de saber como faço para não utilizar retorno (apontador para o próximo objeto a ser criado) no meu código, que segue:
 
	Função main.cpp:
 
	int main() 
	{ 
	   //Declaração de variáveis 
	   Database *primeiro = NULL; 
	   char opcao;
 
	   //Artifício para repetir o programa. 
	   while(opcao!='s') 
	   { 
	      //Menu de opcoes 
	      system("cls"); 
	      cout << "MENU PARA CADASTRO DE CHAMADAS"; 
	      cout << endl << "A - Novo cadastro"; 
	      cout << endl << "B - Listar cadastros"; 
	      cout << endl << "C - Excluir todos os cadastros"; 
	      cout << endl << "D - Alterar potencia de chamada ja cadastrada"; 
	      cout << endl << "S - Sair" << endl << endl;
 
	      //Lendo a opcao do menu 
	      fflush(stdin); 
	      opcao = getch();
 
	      //Menu de opcoes 
	      switch(opcao) 
	      { 
	         case 'A': 
	         case 'a'://Inserindo chamada 
	              system("cls"); 
	              cout << "NOVO CADASTRO" << endl; 
	              primeiro = inserir_call(primeiro); 
	              getch(); 
	              break;
 
	         case 'B': 
	         case 'b'://Listando chamadas 
	              system("cls"); 
	              cout << "CHAMADAS CADASTRADAS" << endl; 
	              listar_call(primeiro); 
	              getch(); 
	              break;
 
	         case 'C': 
	         case 'c'://Excluindo chamada da lista. 
	              system("cls"); 
	              cout << "EXCLUIR TODOS OS CADASTROS" << endl; 
	              while (primeiro != NULL){ 
	                  primeiro = excluir_calls(primeiro); 
	              } 
	              cout << endl << "Todas chamadas cadastradas foram excluidas"; 
	              getch(); 
	              break;
 
	         case 'D': 
	         case 'd'://Alterando chamada da lista. 
	              system("cls"); 
	              cout << "ALTERAR POTENCIA DE CHAMADA CADASTRADA" << endl; 
	              alterar_call(primeiro); 
	              getch(); 
	              break;
 
	         case 'S': 
	         case 's'://Artifício para sair do programa. 
	              system("cls"); 
	              opcao='s'; 
	              break;
 
	         default://Artifício que previne de um usuário digitar uma opcão inexistente no menu. 
	              system("cls"); 
	              break; 
	      } 
	   }
 
	   return 0;
 
	}
 
	Função inserir chamada:
 
	Database* inserir_call(Database *primeiro){ 
	     Database call; 
	     Database *atual = primeiro; 
	     char identificador = 'F'; 
	     int auxInt; 
	     double auxDouble;
 
	     //Lendo as informações do restaurante. 
	     cout << "Node Origem: "; 
	     cin >> auxInt;//call.nodeOr;// scanf("%d",&call.nodeOr); 
	     call.setNodeOr(auxInt);
 
	     cout << "Node Destino: "; 
	     cin >> auxInt;//call.nodeOr;// scanf("%d",&call.nodeOr); 
	     call.setNodeDe(auxInt);
 
	     cout << "Pot entrada (W): "; 
	     cin >> auxDouble;//call.nodeOr;// scanf("%d",&call.nodeOr); 
	     call.setPin(auxDouble);
 
	     //Verificando se o cadastro já existe. 
	     for(atual=primeiro; atual!=NULL; atual=atual->prox){ 
	        if( (atual->getNodeOr()==call.getNodeOr()) && (atual->getNodeDe()==call.getNodeDe()) && (atual->getPin()==call.getPin()) ){ 
	            identificador = 'V'; //já há chamada igual 
	            break; 
	        } 
	     }
 
	     if(identificador != 'V'){ 
	         //Alocando os espaços e guardando as informações do restaurante. 
	         Database* NovaChamada = (Database*) malloc (sizeof(Database)); 
	         NovaChamada->setNodeOr(call.getNodeOr()); 
	         NovaChamada->setNodeDe(call.getNodeDe()); 
	         NovaChamada->setPin(call.getPin()); 
	         NovaChamada->prox = primeiro; 
	         cout << endl << "Cadastro realizado com sucesso"; 
	         cout << endl << endl << "PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL"; 
	         return NovaChamada; 
	     }else{ 
	         cout << endl << "Cadastro invalido - chamada cadastrada anteriormente"; 
	         cout << endl << endl << "PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL"; 
	         return primeiro; 
	     } 
	}
 
	Função listar chamadas:
 
	void listar_call (Database* primeiro){ 
	     Database* atual;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
 
	     //Imprimindo os restaurantes da lista, e suas repectivas informações. 
	     for(atual = primeiro; atual != NULL; atual = atual->prox){ 
	        cout << "________________________________" << endl; 
	        cout << "Node origem: " << atual->getNodeOr() << endl; 
	        cout << "Node destino: " << atual->getNodeDe() << endl; 
	        cout << "Pot entrada (W): " << atual->getPin() << endl; 
	     } 
	     if(primeiro == NULL) 
	        cout << endl << "Nenhuma chamada cadastrada" << endl;
 
	     cout << endl << "PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL"; 
	}
 
	 
 
	Função excluir chamadas:
 
	Database* excluir_calls(Database *primeiro){
 
	     Database *anterior = NULL;//Ponteiro para saber o elemento anterior ao elemento atual da lista. 
	     Database *atual = primeiro;//Ponteiro para percorrer a lista sem perder o primeiro elemento da lista.
 
	     if(atual == NULL){ 
	        return primeiro; 
	     }
 
	     //Excluindo o primeiro restaurante da lista. 
	     if(anterior == NULL){ 
	        primeiro = atual->prox; 
	     //Excluindo um restaurante do meio da lista. 
	     } 
	     else{ 
	        anterior->prox = atual->prox; 
	     }
 
	     //Desalocando o espaço da memória. 
	     free(atual); 
	     return primeiro; 
	}
 
	 
 
	Função alterar potência de chamada:
 
	void alterar_call(Database* primeiro){
 
	     Database* atual = primeiro; 
	     int nOr, nDe; 
	     double power;
 
	     cout << endl << "Dados da chamada a ser alterada: " << endl << endl; 
	     cout << "Noh origem: "; 
	     cin >> nOr; 
	     cout << "Noh destino: "; 
	     cin >> nDe;
 
	     //Procurando chamada a ser alterada 
	     while( (atual!= NULL) && (atual->getNodeOr() != nOr) && (atual->getNodeDe() != nDe) ){ 
	        atual = atual->prox; 
	     }
 
	     //Alterando os dados do restaurante. 
	     if(atual != NULL){ 
	        cout << "NOVA potencia: "; 
	        cin >> power;
 
	        atual->setPin(power);
 
	        cout << endl << "Potencia alterada com sucesso"; 
	     } 
	     else{ 
	        cout << endl << "Chamada nao encontrada"; 
	     }
 
	     cout << endl << endl << "PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL";
 
	}
 
	Class Database:
 
	class Database{ 
	public: 
	    void setNodeOr(int); 
	    void setNodeDe(int); 
	    void setPin(double);
 
	    int getNodeOr(); 
	    int getNodeDe(); 
	    double getPin();
 
	    class Database* prox;
 
	private: 
	    int nodeOr; 
	    int nodeDe; 
	    double pIn; 
	};