Вы находитесь на странице: 1из 7

CADERNO DE ESTRUTURA DE DADOS

ESTRUTURAS
Definio de Estruturas
struct nome_da_estrutura{ tipo nome_var1; tipo nome_var2; }variavel_tipo_nomedaestrutura; Acessando campos na estrutura struct nome_da_estrutura X; X.nome_var1 = 10; Declarando ponteiros para estrutura struct ponto *p; struct ponto *pp; Acessando campos de um ponteiro para estrutura (*pp).x = 12,0; ou pp->x = 12,0 Alocao dinmica de estruturas p=(struct ponto *)malloc(sizeof(struct ponto)); p->x=12,0 Vetores para estruturas struct info_usuario { int id; char nome[20]; long endereo_ip; time_t hora_conexao; }; struct info_usuario usuarios[10]; Vetores de ponteiros para estruturas typedef struct info_usuario *Pusuarios Pusuarios tab[100];

PILHA
Definio de Pilha LIFO - Last in First Out!
define TAM 100; typedef struct pilha{ char vet[TAM]; int pos; }Tpilha; typedef Tpilha *Ppilha;

//Funo criar pilha Ppilha cria (){ Ppilha np; np = (Ppilha)malloc(sizeof(Tpilha)); np->pos = -1; return (np); } //Funo PUSH (INSERE no topo) int Push (PPilha p, char a){ //checa se chegou ao fim if (p->pos == TAM-1) return (-1); else{ p->pos += 1; p->vet[p->pos] = a; return (1); }} //Funo POP (REMOVE do topo) int Pop (PPilha p, char *a){ if(p->pos == -1) return (-1); else{ *a = p->vet[p->pos]; p->pos -= 1; }} //EXEMPLO DE FUNO PRINCIPAL int main (){ Ppilha pilha; char frase [TAM],C; int i, j; printf ("Digite uma frase"); gets (frase); pilha = cria (); for (i=0. i < strlen (frase; i++) Push (pilha, frase [i]); puts ("\nRESULTADO:\n); for (j=0; j<i; j++){ Pop(pilha, &C); printf ("%c", C); } free (pilha); return 1; printf (\n); return 0; }

LISTA ENCADEADA
Definio de Lista typedef struct lista { int info; struct lista* prox; }Tlista; typedef Tlista *Plista;
//Inicializao de lista encadeada Plista inicializa_lista (){ return NULL; } //Inserindo valores na lista Plista insere (Plista L, int i) { Plista novo = (Plista) malloc (sizeof (Tlista)); novo->info = i; novo->prox=L; return novo; } //Procurando valor na lista Plista busca (Plista L, int V){ Plista p = L; do{ if(p->info == V) //ACHOU return p; else p = p->prox; }while (p->info != V && p->prox != NULL); return NULL; } //Funo Recursiva que busca valores na lista Plista busca_rec (Plista L, int v){ if (L == NULL) return(L); if(L->info = = v) return (L); return (busca_rec(L->prox)); } //Retirando elementos da lista Plista Retira (Plista L, int V){ Plista ant = NULL; // ponteiro para elemento anterior Plista p; // Ponteiro p/ percorrei lista // Procura elemento na lista, guardando ant for (p=L;p!=NULL && p->info != v; p = p->prox)

ant=p; //Verifica se achou elemento if (p == NULL) return L; // No achou nada //Retirar elemento if (ant == NULL) // Retira 1 elemento L = p->prox; else // Retira elemento no meio da lista ant->prox = p->prox; free (p); return L; } // Funo imprimir RECURSIVA void imprime_rec (Plista L){ if (L!=NULL){ //imprime 1 elemento printf ("info: %d\n", L->info); //imprime sub-lista imprime_rec(L->prox); }} //Funo retirar RECURSIVA Plista retira_rec (Plista L, int v){ if(L==NULL) return L; //Verifica se elemento retirado o primeiro if(L->info == v){ Plista t = L; L=L->prox; free (t); }else L->prox = retira_rec(L->prox, v); return L; } //Funo que libera a lista RECURSIVA Plista libera_rec (Plista L){ if (L!=NULL){ Plista p = L; L=L->prox; free(p); libera_rec (L); }}

FILA
FIFO First In First Out Definio de Fila typedef struct no{ int info; struct no* prox; }TNo; typedef TNo *PNo; typedef struct fila { PNo ini; PNo fim; }TFila; typedef TFila *PFila; //Inicializao da fila PFila cria (){ PFila f = (PFila) malloc (sizeof (TFila)); f->ini = f->fim = NULL; return (f); } //Inserindo Valores void insere (PFila f){ PNo novo; novo = (PNo) malloc (sizeof (TNo)); novo->prox = NULL; printf("Digite um valor: "); scanf("%i", & novo->info); if (f->fim == NULL) f->ini = novo; else f->fim->prox = novo; f->fim = novo; } //Imprimindo valores void imprime (PFila f){ PNo q = f->ini; while(q != NULL){ printf("%d", q->info); q = q->prox;} }

//Retirando Valores void retirar (PFila f){ PNo q; q = f-> ini; f-> ini = f->ini->prox; printf("Removeu %d\n", q->info); free (q); } //Liberando Lista void liberar (PFila f){ PNo q; for (q=f; q != NULL; q=q->prox){ f->ini = q->prox; free(q); } free(f); }return f; } //MAIN e MENU int main(){ PFila fila; fila = cria (); int op; do{ printf("\n1. Inserir\n2. Imprimir\n3. Remover\n4. Sair\n\n"); scanf("%i", &op); switch (op){ case 1: insere (fila); break; case 2: imprime (fila); break; case 3: retirar (fila); break; case 4: liberar (fila); break; } }while (op != 4); return 0; }

LISTA CIRCULAR
Definio de Lista Circular

Вам также может понравиться