Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Arreglos de Listas en Lenguaje C

arreglo de listas - lenguaje c - algoritmos
by

Gabriel Chaldu

on 24 November 2016

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Arreglos de Listas en Lenguaje C

Declaración de Arreglo de Listas
Para definir un arreglo de Listas es necesario:
nodo * crearNodo(int nota, char alumno[])
{
nodo * aux = (nodo*)malloc(sizeof(nodo));
aux->nota = nota;
strcpy(aux->alumno,alumno);
aux->siguiente = NULL;
return aux;
}
int
buscaPosMateria(celda adl[], char materia[], int validos)
{
int rta=-1;
int i=0;

while
((i<validos)
&&
(rta==-1) )
{

if
(strcmp(adl[i].materia, materia)==0)
{
rta=i;
}
i++;
}

return
rta;
}
int agregarMateria(celda adl[], char materia [], int validos)
{
strcpy(adl[validos].materia, materia);
adl[validos].lista = inicLista();
validos++;
return validos;
}
El main()

int main()
{
celda
adl
[20];
char materia[30];

int validos = Ingresarnotas
(adl)
;


printf("\n\nIngrese la materia que desea Mostrar\n");
fflush(stdin);
scanf("%s",&materia);

int pos = buscaPosMateria(
adl
,materia,validos);
if(pos != -1)
recorrerYmostrar(
adl
[pos].
lista
);

}

ARREGLO DE LISTAS EN C
Los arreglos son una
colección de variables del mismo tipo
y se referencia usando un nombre común. Sus principales características son:

1.Consta de
posiciones de memoria consecutivas.

2.
La dirección más baja corresponde al primer
elemento
y la más alta al último.

3.Un arreglo
puede tener una o varias dimensiones
.

4.Un arreglo
es una colección finita, homogénea y ordenada
de elementos.

¿QUÉ ES UN
ARREGLO
?

typedef struct
{
char materia[20];

nodo
* lista;
} celda;

typedef struct
{
int nota;
char alumno[20];
struct nodo * siguiente;
}
nodo
;
Nodo de la Lista Enlazada
Arreglo de Listas
int
Ingresarnotas
(celda adl[], int dimension)
{
int nota;
char alumno[20];
char materia[30];
char salir='s';
int validos=0;
while(salir=='s' && validos < dimension)
{
printf("\ningrese la materia: ");
fflush(stdin);
scanf("%s",&materia);
printf("\ningrese un nota: ");
fflush(stdin);
scanf("%d",&nota);
printf("\ningrese un alumno: ");
fflush(stdin);
scanf("%s",&alumno);

validos =

alta(adl, materia, alumno, nota
,
validos)
;
printf("Desea continuar presione 's' ");
salir=getch(salir);
}
return validos;
}
Cargo los datos
Almacena la cantidad de listas validas del arreglo
• Cada posición en el arreglo representa una materia.
• Cada materia tiene una lista de notas.
• La lista contiene los siguientes datos:
o La nota.
o El alumno.

int
alta
(celda adl[], char materia[], char alumno[],int nota, int validos)
{
nodo * aux =
crearNodo
(nota, alumno);
int
pos
=
buscaPosMateria
(adl,materia,validos);
if(pos==-1)
{
validos=
agregarMateria
(adl,materia,validos);

pos
=validos-1;
}
adl[
pos
].lista=
agregarPpio
(adl[
pos
].lista, aux);
return validos;
}
Tiene como parámetros:
• El arreglo de materias
• El nombre de la materia a buscar
• La cantidad de elementos validos del arreglo
Objetivo:
• Si encuentra la materia retorna la posición de la lista de notas de la materia.
• Si NO encuentra la materia retorna -1.

FUNCIÓN BUSCAR POSICIÓN
Si la materia No existe la agrega al arreglo
y luego a la lista
Si la materia existe la agrega a la lista.
Tiene como parámetros
:
• El arreglo de materias.
• El nombre de la materia.
• La cantidad de materias.

Objetivo:
• Setear el nombre de la materia.
• Inicializar la lista (Setear la lista).
• Retornar la cantidad de validos + 1.

nodo * agregarPpio(nodo * lista, nodo * nuevoNodo)
{

if
(lista == NULL)
{
lista = nuevoNodo;
}

else
{
nuevoNodo->siguiente = lista;
lista = nuevoNodo;
}

return
lista;
}
Tiene como parámetros:
• La lista
• El nodo Nuevo
Objetivo:
• Insertar un Nuevo Nodo al inicio de la lista.
• Retornar el
puntero al inicio de la lista

FUNCIÓN BUSCAR POSICIÓN
Prof. Gabriel Chaldu
ARREGLO DE LISTAS
Full transcript