Lista de Estrutura de Dados
Por: Fernanda Dantas • 15/3/2021 • Exam • 907 Palavras (4 Páginas) • 186 Visualizações
#include <stdio.h>
#include <stdlib.h>
typedef struct sCanal{
int numCanal;
char nomeCanal[15];
}CH;
typedef struct sNO{
CH info;
struct sNO *esq;
struct sNO *dir;
}NO;
void inicializar(NO **lista){
*lista = NULL;
}
void alocarNo(NO* q){
q = (NO*) malloc (sizeof (NO));
}
void desalocarNo(NO* q){
free(q);
}
int vazia(NO* ptrLista){
if(ptrLista == NULL){
return 1; //lista vazia
}
else{
return 0;
}
}
void inserirCanal(NO** lista, int elem){
NO *atual = *lista;
NO *anterior = NULL;
NO *novo;
char canal[15];
alocarNo(novo);
if(novo!=NULL){
novo->info.numCanal = elem;
printf("Nome do canal %d:", elem);
scanf("%s", &canal);
novo->info.nomeCanal = canal;
novo->dir = NULL;
while(atual!=NULL && atual->info.numCanal < elem){
anterior = atual;
atual = atual->dir;
}
if(atual == *lista){ //insere no início
novo->dir = *lista;
*lista = novo;
} else{ //insere no meio ou no fim
anterior->dir = novo;
novo->dir = atual;
}
}
else{
printf("\nErro ao alocar o no!");
}
}
NO* pesquisar(NO **lista, int elem){
NO * aux;
if(vazia(*lista)==0){
while(aux->dir!=NULL){
if(aux->info.numCanal ==elem){
return aux; //encontrou o canal
aux = aux->dir;
}
}
}
else{
printf("CANAL NAO ENCONTRADO");
return NULL; //lista vazia ou não encontrou o canal
}
}
void exibirCanais(NO **lista){
NO* aux;
aux = *lista;
if(vazia(*lista)==0){
while(aux->dir!=NULL){
printf("%c ", aux->info);
aux = aux-> dir;
}
}
else{
printf("\nErro. Lista vazia.");
}
desalocarNo(aux);
}
void preencherCanais (NO **lista, int qtd) {//quantidade de canais {
int i;
for(i=1; i<=qtd; i++){
inserirCanal(*lista, i);
}
}
void exibirInverso(NO **lista){
NO* aux;
aux = *lista;
if((vazia(*lista)) ==0){
do{
aux = aux-> dir;
...