Lista encadeada
Publicado por Leonardo Barrozo dos Santos 10/03/2003
[ Hits: 22.463 ]
Código fonte de um programa de lista encadeada.
/* +-----------------------------------------------------------+ | Programador: Leonardo Barrozo dos Santos | | Descrição..: Programa que demonstra o funcionamente de | | ...........: uma lista encadeada | | Arquivo....: listaencadeada.c | +-----------------------------------------------------------+ +---+-+ +---+-+ +---+-+ +---+-+ | | |--->| | |--->| | |---> ... | | | +---+-+ +---+-+ +---+-+ +---+-+ */ #include <stdio.h> #include <stdlib.h> #define MALLOC(x) ((x *) malloc (sizeof(x))) //Este define torna a utilização do malloc mais fácil void insere (void); void exibir (void); void exclui (void); struct no{ int item; struct no *proximo; }; typedef struct no no_t; no_t *primeiro, *novo, *ultimo; int main (void) { int op; primeiro = novo = ultimo = 0; for (;;) { system("clear"); printf("\n1- Inserir"); printf("\n2- Exibir"); printf("\n3- Excluir"); printf("\n4- Sair"); printf("\nSua opção: "); scanf ("%d",&op); switch(op){ case 1 : insere(); break; case 2 : exibir(); break; case 3 : exclui(); break; case 4 : exit (0); default: printf("Opcao Errada"); } } } void insere (void) { int j; system("clear"); printf("ITEM : "); scanf ("%d",&j); novo = MALLOC(no_t); novo->proximo = 0; novo->item = j; if (primeiro == 0) primeiro = novo; else ultimo->proximo = novo; ultimo=novo; } void exibir (void) { no_t *p; char s[80]; system("clear"); if (primeiro == 0) { printf("Lista Vazia"); return; } p = primeiro; do{ printf("\nITEM %d",p->item); p = p->proximo; }while (p!=0); printf("\n<S>air"); scanf("%s",&s); } void exclui (void) { no_t *anterior, *novo1; int j,i; novo1 = primeiro; system("clear"); if (primeiro == 0) { printf("Lista Vazia"); return; } i = 0; printf("Digite o item que deseja excluir: "); scanf ("%d",&j); do{ if (novo1->item == j) { if (primeiro->proximo == 0) { primeiro = novo = ultimo = 0; break; } else if (novo1->proximo == 0) { anterior->proximo=0; free(novo1); break; } else if (i==0 && primeiro->proximo != 0) { primeiro = novo1->proximo; novo1->proximo = 0; free(novo1); break; } else if (novo1->proximo != 0); { anterior->proximo = novo1->proximo; novo1->proximo = 0; free(novo1); break; } } anterior = novo1; novo1 = novo1->proximo; i = i + 1; }while(novo1 != 0); }
Métodos de Ordenação - Radix Sort
Como escolher o melhor escalonador de CPU para melhorar o desempenho da máquina
Curiosidade sobre DOOM Guy e Isabelle de Animal Crossing
Inicializando servidor Ubuntu na AWS e rodando apache em Container
Conheça o Octopi, outro frontend para o Pacman com acesso ao ARU (Arch Linux e derivados)
Terminal transparente no Debian 12 com interface i3wm usando Xfce4-Terminal e Compton
Como compilar o DOOM RETRO no Linux
Stacer - um otimizador gráfico básico de Linux
Corrigindo o erro de "WARNING: Possibly missing firmware for module" no Arch Linux
Como colocar uma assinatura digital em um código compilado ! (0)
Após atualização do Ubuntu 22.04.4 LTS perdi a instalação da placa de ... (0)
DRIVER DE ADPTADOR HDMI PARA USB (2)