Como editar uma lista ligada em c programação

Video: Linguagem C - Lista simplesmente encadeada, entendendo, inserindo no inicio e printando.

Porque uma lista ligada em programação C é encadeados referenciando posições de memória, a edição é feito modificando essas posições 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 é eficazmente removido (e perdeu) que por operação.

Video: Programação C - Lista Encadeada

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



A melhor maneira de alterar itens em uma lista ligada é 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.

Video: Lista Encadeada em C by Casseb

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ípico {int valor struct típico * próxima -} - struct típico * primeira struct típico * 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 é manipulados por uma função * / int main) {escolha (int = `` - (! choice = / * obter o loop while para girar * / first = NULL-tempo `Q`) {escolha = menu () - switch (escolha ) {case `S`: show () - break-caso `A`: add () - break-caso `R`: delete () - break-caso `Q`: break-default: break -}} return ( 0) -} / * exibir o menu principal e recolher entrada * menu / int (void) {int ch-printf ("S) como, A) dd, R) emova, Q) uit: ") CH = getchar () - enquanto (getchar () = `n`) / * remover o excesso de entrada * / - retorno (toupper (ch)) -} / * Adicionar um item ao final da lista * ligado / Void Adicionar (void) {if (primeira == null) / * caso especial para o primeiro item * / {first = create () - atual = primeiro-} else / * encontrar o último item * / {current = primeira enquanto (corrente gt; seguinte) / * último item == NULL * / corrente = corrente gt; next-new = create () - corrente gt; next = novo- / * ligação de actualização * / corrente = novo-} printf ("Digite um valor: ") -scanf ("% d",&! Corrente gt; valor) -current-gt; next = NULL-while (getchar () = `n`) / * remover o excesso de entrada * / -} / * Apresentar todas as estruturas na lista ligada * / void show (vazio ) {int count = 1-se (primeiro == NULL) / * esta lista está vazia * / {coloca ("Nada para mostrar") -return-} puts ("Mostrando todos os registros:") -current = primeiro-while (atual) / * último registro == NULL * / {printf ("Registro% d:% dn", Contagem, corrente gt; valor) -current = corrente gt; da próxima contagem ++ -}} / * Remover um registro da lista * / void delete (void) {struct típico * previous- / * salvar recorde anterior * / int r, c-se (primeiro == NULL) / * verificar lista vazia * / {coloca ("Não há registros para remover") -return-} puts ("Escolha um registro para remover:") -show () - printf ("Registro: ") -scanf ("% d",&r) -Ao (getchar () = `n`) / * remover o excesso de entrada * / -!! c = 1-corrente = primeira anterior nulo = / * primeira ficha tem nenhum anterior * / enquanto (c = r) {if (== corrente NULL) / * assegurar que `r` é na gama / * {coloca ("Registro não encontrado") -return-} anterior = corrente de corrente = corrente gt; next-c ++ - se (== anterior NULL) / * caso especial para primeiro registro * / first = corrente gt}; next-else / * Ponto recorde anterior no lado anterior *-GT /; = próxima corrente gt;-próxima printf ("Registro% d removed.n", R) -livre (atual) - / * liberação de memória * /} / * Construir 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 () 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 obter 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 ++.


Publicações relacionadas