Lista encadeada com cabecalho
Publicado por Leonardo Barrozo dos Santos 10/03/2003
[ Hits: 12.429 ]
Código fonte de um programa sobre lista encadeada com cabeçalho.
/* +-----------------------------------------------------------+ | 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); }
Método eficiente de armazenamento utilizando containers (Vector e Map)
Nenhum comentário foi encontrado.
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (3)
É cada coisa que me aparece! - não é só 3% (3)
Melhorando a precisão de valores flutuantes em python[AJUDA] (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta