Lista encadeada com cabecalho
Publicado por Leonardo Barrozo dos Santos 10/03/2003
[ Hits: 12.664 ]
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);
}
Passando uma matriz para funcao
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Programa fora de escala na tela do pc (19)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)
O programa assinador digital (1)









