Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: slack+flux
Por U-Neeks
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Leonardo Barrozo dos Santos em 10/03/2003    [ 15929 hits ]

Login: lbsantos, 426664 pontos

   


Descrição

Código fonte de um programa de lista encadeada.

[ Download: listaencadeada.c ]   [ Enviar nova versão ]

[ Esconder código-fonte ]

/*
+-----------------------------------------------------------+
| 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);
}


Scripts recomendados
   Script Linux recomendado Aritmética de ponteiros
   Script Linux recomendado Desenhando uma superfície Bézier
   Script Linux recomendado Desenhando Nuvens ou o Fractal de Plasma
   Script Linux recomendado Algoritmo de Ordenação Radix
   Script Linux recomendado Uso de threads no C

Comentários
[1] Comentário enviado por demiscarlos em 25/06/2004 - 01:56h:

Valeu, uma boa dica foi o seu programa.

[2] Comentário enviado por sbpaco em 17/09/2007 - 15:55h:

Muito bom o exemplo da lista. parabéns!


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.