Como editar uma lista ligada em C Programming

Porque uma lista ligada em programação C é encadeados referenciando locais de memória, edição é feita mediante a alteração desses locais de memória. Por exemplo, se você deseja remover o terceiro item da lista, você simplesmente esquivar em torno dele, ligando o segundo item para o quarto item. O terceiro item é efetivamente removido (e perdeu) por essa operação.

image0.jpg

Da mesma forma, você pode inserir um item na lista editando o ponteiro ao lado do item anterior.

image1.jpg

A melhor maneira de alterar itens em uma lista vinculada é ter um programa interativo que permite visualizar, adicionar, inserir, excluir e editar as várias estruturas. Tal programa seria muito longo e complexo, que é por isso que você vai encontrá-lo mostrado em um programa de lista vinculada Interactive.

AN INTERACTIVE-PROGRAMA lista ligada

/ * Um programa de lista ligada interativo * // * Dan Gookin, começando Programação com C For Dummies * / # include # include # include struct típica {int value-estrutura típica * próxima -} - struct típico * primeira estrutura típica * current-estrutura típica * novo menu-int (void) -void adicionar (void) mostram -void (void) -void delete (void) -struct típico * criar (void) - / * A principal função funciona com entrada onlyEverything mais é manipuladas por uma função * / int main () {escolha int = ' 0'- / * obter o loop while para girar * / first = NULL-while (choice =!' {escolha = menu () Q ') - interruptor (escolha) {case 'S': show () - quebrar a caso 'A': add () - quebrar a caso 'R': delete () - quebrar a caso 'Q': break-padrão: break-}} return (0) -} / * exibir o menu principal e recolher a entrada * menu / int (void) {int ch-printf ( "S) como, a) dd, R) emove, Q) uit:") CH = getchar () - enquanto (getchar () = ' n'!) / * remover o excesso de entrada * / - retorno (toupper (ch)) -} / * Adicionar um item ao fim da lista ligada * / void add ( void) {if (primeira == null) / * caso especial para o primeiro item * / {first = create () - atual = primeiro-} else / * encontrar o último item * / {current = first-while (observação de correntes > ao lado) / * último item == NULL * / current = observação de correntes> next-new = create () - observação de correntes> next = novo- / * atualização ligação * / current = recém-} printf ( "Digite um valor: ") -scanf ("% d ", observação de correntes> value) -current-> next = NULL-while (getchar () = ' n') / * remover o excesso de entrada * / -} / * Mostrar todas as estruturas em a lista ligada * / void show (void) {int count = 1-if (primeira == null) / * esta lista está vazia * / {puts ( "Nada para mostrar") - voltar-} puts ( "Mostrando todos os registros : ") - atual = first-while (atual) / * último registro == NULL * / {printf (" Record% d:% d n ", conta, observação de correntes> value) -current = observação de correntes> NEXT- count ++ -}} / * Remover um registro da lista * / void delete (void) {struct típico * previous- / * salvar anterior registro * / int r, c-se (primeiro == null) / * verificar se há lista vazia * / {puts ( "Nenhum registro para remover") - regresso-} puts ( "Escolha um registro para remover:") - show () - printf ( "Record:") -scanf ( "% d", r) - while (getchar () = ' n'!) / * remover o excesso de entrada * / - c = 1-current = first-previous = nulo-/ * primeiro registro não tem precedente * / while (c = r!) {if (== atual NULL) / * garantir que 'r' está no intervalo * / {puts ( "Record não encontrado") - regresso-} anterior = corrente de corrente = observação de correntes> next-c ++ -} if (== anterior NULL) / * caso especial para primeiro registro * / first = observação de correntes> next-else / * ponto recorde anterior no próximo * / previous-> next = observação de correntes> próxima printf ( "Record% d removido. n", r) -livre (atual) - / * liberação de memória * /} / * criar uma estrutura vazia e retornar seu endereço * / struct típico * criar (void) {struct típico * aa = (struct típico *) malloc (sizeof (struct típico)) - if (a == null) {puts ( "Algum tipo de malloc () de erro") - exit (1) -} return (a) -}

Exercício 1: Se você tem o tempo, digite o código fonte do programa-List Linked um interativo a partir em seu editor. Digitando-o ajuda a entender melhor o código. Há comentários incluídos para ajudá-lo a ver o que está acontecendo. Criar e executar algumas vezes para pegar o jeito dele.

Esteja ciente de que delete é uma palavra-chave C ++ e não pode ser usado como um nome de função (ou variável) quando compilar o código C ++.

menu