Estructuras
con punteros:
Nodos
y
Listas
Un programa C
Creación de “tipo” estructura
struct str {
int x;
struct str *p;
};
main(){
struct str a;
struct str *b;
b=NULL;
a.x=55;
b=&a;
b->x=66;
}
x
Valor entero
p
Dirección a
otra variable
de misma
estructura
Creación de una variable
struct str {
int x;
struct str *p;
};
main(){
struct str a;
struct str *b;
b=NULL;
a.x=55;
b=&a;
b->x=66;
}
x
a
?
x
p
p
Creación de un puntero
struct str {
int x;
struct str *p;
};
main(){
struct str a;
struct str *b;
b=NULL;
a.x=55;
b=&a;
b->x=66;
}
x
a
?
x
p
b
?
p
Puntero apuntando a “nada” conocida
struct str {
int x;
struct str *p;
};
main(){
struct str a;
struct str *b;
b=NULL;
a.x=55;
b=&a;
b->x=66;
}
x
a
?
x
p
b
?NULL
p
Asignar un valor a un campo
struct str {
int x;
struct str *p;
};
main(){
struct str a;
struct str *b;
b=NULL;
a.x=55;
b=&a;
b->x=66;
}
x
a
55
?
x
p
b
NULL
p
puntero apuntando a variable
struct str {
int x;
struct str *p;
};
main(){
struct str a;
struct str *b;
b=NULL;
a.x=55;
b=&a;
b->x=66;
}
x
a
55
?
x
p
b
NULL
p
Cambiando valor por medio de puntero
struct str {
int x;
struct str *p;
};
main(){
struct str a;
struct str *b;
b=NULL;
a.x=55;
b=&a;
b->x=66;
}
b
x
a
55
66
?
x
p
p
¿Puntero en “a” apuntar a algo?
struct str {
int x;
struct str *p;
};
main(){
struct str a;
struct str *b;
b=NULL;
a.x=55;
b=&a;
b->x=66;
}
b
x
•Se puede hacer apuntar a otra variable
del mismo tipo o a “nada” (NULL)
a
66
p
x
p
• La gracia es hacerlo sin usar el
nombre de la variable “a” sino el
?
puntero “p”
Creando otra variable estructurada
struct str {
int x;
struct str *p;
};
main(){
struct str a;
struct str *b;
b=NULL;
a.x=55;
b=&a;
b->x=66;
……
b
struct str b;
x
}
a
66
p
?
x
p
b
?
x
p
Conectando los nodos
struct str {
int x;
struct str *p;
};
main(){
struct str a;
struct str *b;
b=NULL;
a.x=55;
b=&a;
b->x=66;
……
b
struct str b;
a.p=&b;
p
}
a
66
x
?
x
p
b
?
x
p
Cerrando la lista
struct str {
int x;
struct str *p;
};
main(){
struct str a;
struct str *b;
b=NULL;
a.x=55;
b=&a;
b->x=66;
……
b
struct str b;
a.p=&b;
b.p=NULL;
}
a
66
x
b
?
x
p
?
NULL
x
p
p
Dandole valor a x de nuevo nodo
struct str {
int x;
struct str *p;
};
main(){
struct str a;
struct str *b;
b=NULL;
a.x=55;
b=&a;
b->x=66;
……
b
struct str b;
a.p=&b;
b.p=NULL;
b.x=77;
}
a
66
x
x
p
b
?
77
NULL
x
p
p
Descargar

struct str