Ponteiros e registros Se temos um ponteiro que aponta para uma struct Podemos acessar um campo da struct assim: (*ponteiro).campo //Os parêntesis são obrigatórios porque o operador . tem precedencia sobre * Em C++ podemos usar o operador -> ponteiro -> campo LISTA SIMPLESMENTE ENCADEADA Todos os nós da lista são registros (struct) do mesmo tipo Cada nó tem um ponteiro (prox) que aponta para o proximo nó da lista entre oputros campos que armazenam os dados do nó. O ponteiro do último nó da lista aponta para NULL. Para acessar a lista mantemos um ponteiro chamado inicio, que sempre aponta para o primeiro nó da lista OPERAÇÕES COM LISTA SIMPLESMENTE ENCADEADA Suponha a existencia de um tipo registro chamado noh Para varrer todos os nós da lista noh* aux; aux=inicio; while(aux) //aux!=NULL aux=aux->prox; //aux sai do laço apontando para NULL Para varrer até o ultimo nó da lista noh* aux; aux=inicio; while(aux->prox) //aux->prox!=NULL aux=aux->prox; //aux sai do laço apontando para o último nó Faça um programa que cadastre alguns restaurantes com os seguintes dados: nome, tipo de comida, preço médio dos pratos. Use o nome fim como flag #include #include struct tiporest { char nome[40]; char tipocomida[20]; douoble preco; tiporest* prox; }; void main() { tiporest* inicio=NULL; char nome[40]; cout << "\nDigite o nome do restauramte\t"; gets(nome); while(strcompi(nome,"fim")) { novo=new tiporest; //Se a alocação não deu certo encerra o programa if(!novo) { cout << "\nErro de alocacao de memoria\n"; getch(); desaloca_tudo(inicio); exit(0); } strcpy(novo->nome,nome); cout << "\nTipo de Comida\t"; gets(novo->tipocomida); cout << "\nPreco medio\t"; cin >> novo->preco; insere_final(inicio, novo); cout << "\nNome do restaurante:\t"; gets(nome); } //impressão do restaurantes } void desaloca_tudo(tiporest*& inicio) { tiporest* aux; while(inicio) { aux=inicio->prox; delete inicio; inicio=aux; } }