Lista encadeada
Publicado por Leonardo Barrozo dos Santos 10/03/2003
[ Hits: 22.579 ]
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); }
Controle de tráfego aéreo - filas dinâmicas
Passando uma matriz para funcao
Desenhando uma superfície Bézier
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Quero saber sobre os melhores aplicativos de office para usar em 2024 ... (3)
Queria saber se existe alguma forma de desistalar programa no ubuntu s... (3)
Toda vez que tento atualizar o clamav me deparo com erros ao atualizar... (0)