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



» Screenshot
Linux: Arch Linux & KDE 4.4.5
Por sandrosfc
» 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    [ 6003 hits ]

Login: lbsantos, 408635 pontos

   


Descrição

Código fonte de um programa sobre lista encadeada com cabeçalho.

[ Download: cabeclistaenca.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 com cabeçalho.           |
| Arquivo....: cabeclistaenca.c                             |
+-----------------------------------------------------------+
                           +-+---+-+
    +-----------------|  |     |  |----------------+
    |                      +-+---+-+                    |
    |                                                        |
+---+-+    +---+-+    +---+-+             +---+-+
  |    |  |-->|     |  |-->|    |   |--> ...     |    |   |
+---+-+    +---+-+    +---+-+             +---+-+
*/

#include <stdio.h>
#include <stdlib.h>
#define MALLOC(x) ((x *) malloc (sizeof(x)))

void insere (void);
void exibir (void);
void exclui (void);

struct no{
   int item;
   struct no *proximo;
         };

typedef struct no no_t;
no_t *novo;

struct cabec{
   int tamanho;
   no_t *first;
   no_t *last;
            };

typedef struct cabec cabec_t;
cabec_t *t;

void main(void)
{
int op,k;
t=MALLOC(cabec_t);
t->tamanho = 0;
novo = t->first = t->last = 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: system("clear");
                 printf("Opção Errada");
                 scanf("%d",&k);
             }
}                
}

void insere(void)
{
int j;
printf("ITEM: ");
scanf("%d",&j);
novo = MALLOC(no_t);
novo->proximo = 0;
novo->item = j;
if (t->first == 0)  t->first = novo;
else  
        t->last->proximo = novo;
t->last = novo;
t->tamanho++;
}

void exibir(void)
{
no_t *p;
int k;
system("clear");
if (t->first==0)
{
  system("clear");
  printf("Lista Vazia");
  scanf("%d",&k);
  return;
}
p = t->first;
do{
    printf("\nITEM %d",p->item);
    p = p->proximo;
   }while (p!=0);
printf("\n\nTEM %d ITENS NA LISTA",t->tamanho);  
scanf("%d",&k);
}

void exclui(void)
{
no_t *anterior, *novo1;
int j,i;
novo1 = t->first;
if (t->first==0)
{  
    system("clear");
    printf("Lista Vazia");
    scanf("%d",&i);
    return;
}
i=0;
system("clear");
printf("Digite o item que deseja excluir: ");
scanf("%d",&j);
do{
    if (novo1->item == j)
    {
     if (t->first->proximo == 0)
      {
       novo = t->first = t->last = 0;
       t->tamanho = 0;
       break;
      }
     else
     if (novo1->proximo == 0)
      {
       anterior->proximo=0;
       t->last = anterior;
       free(novo1);
       t->tamanho--;
       break;  
      }
     else
     if (i==0 && t->first->proximo != 0)
      {
       t->first = novo1->proximo;
       novo1->proximo = 0;
       free(novo1);
       t->tamanho--;
       break;
      }
     else
     if (novo1->proximo != 0)
      {
       anterior->proximo = novo1->proximo;
       novo1->proximo = 0;
       free(novo1);
       t->tamanho--;
       break;
      }
    }
    anterior = novo1;
    novo1 = novo1->proximo;
    i = i + 1;
}while(novo1 != 0);  
}

Scripts recomendados
   Script Linux recomendado Pilha
   Script Linux recomendado Fila
   Script Linux recomendado Algoritmo de Ordenação Radix
   Script Linux recomendado [C] Qsort - Ordenação
   Script Linux recomendado Jogando dados e somando os valores

Comentários
Nenhum comentário foi encontrado.

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.