Gracias :3
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú
public void insertar(String i) {
Cola p=new Cola();
Nodo n=new Nodo(i);
if(raiz==null) {
raiz=n;
p.encolar(n);
}else {
Nodo aux=raiz;
p.encolar(aux);
while(aux!=null) {
n.padre=aux;
if(n.llave.compareTo(aux.llave)>0) {
aux=aux.der;
}else {
aux=aux.izq;
}
}
if(n.llave.compareTo(n.padre.llave)<0) {
n.padre.izq=n;
}else {
n.padre.der=n;
}
}
}
public void encolar(Nodo n) {
Nodo nuevo=new Nodo(n.llave);
if (cabeza==null) {
cabeza=nuevo;
ultimo=nuevo;
}else {
ultimo.siguiente=nuevo;
ultimo=nuevo;
}
}
public void recorrerAmp(Nodo n) {
Cola cola,colaux;
Nodo aux;
if (n != null) //SI EL ÁRBOL CONTIENE NODOS...
{
cola=new Cola(); //SE INSTANCIA EL OBJETO COLA
colaux=new Cola(); //SE INSTANCIA EL OBJETO COLAAUX
cola.encolar(n); //SE INSERTA EL NODOARBOL "A" (RAIZ) COMO PRIMER NODO EN LA COLA
while (cola.colavacia()!=1) //MIENTRAS HAYAN ELEMENTOS EN LA COLA...
{
colaux.encolar(aux=cola.eliminar()); /*EL ELEMENTO EXTRAIDO DE LA COLA PRINCIPAL ES ASIGNADO
A AUX Y A SU VEZ INSERTADO EN LA COLA AUXILIAR*/
if (aux.izq != null) //SI EL HIJO IZQUIERDO DEL NODO ACTUAL EXISTE
{
cola.encolar(aux.izq); //SE INSERTA ESE HIJO COMO ELEMENTO SIGUIENTE EN LA COLA
}
if (aux.der!= null) //SI EL HIJO DERECHO DEL NODO ACTUAL EXISTE
{
cola.encolar(aux.der); //SE INSERTA ESE HIJO COMO ELEMENTO SIGUIENTE EN LA COLA
}
}
colaux.imprimir(); //POR ÚLTIMO SE IMPRIME LA COLA AUXILIAR
}
else {
System.out.println("No existen elementos para realizar el recorrido por Amplitud");
}
}
package estructura;
public class Arbol {
Nodo raiz;
public Arbol() {
raiz=null;
}
//Insertar
public void insertar(String i) {
Cola p=new Cola();
Nodo n=new Nodo(i);
p.inser(n);
if(raiz==null) {
raiz=n;
}else {
Nodo aux=raiz;
while(aux!=null) {
n.padre=aux;
if(n.llave.compareTo(aux.llave)>0) {
aux=aux.der;
}else {
aux=aux.izq;
}
}
if(n.llave.compareTo(n.padre.llave)<0) {
n.padre.izq=n;
}else {
n.padre.der=n;
}
}
}
/*public void recorrerAmp(Nodo n) {
Cola cola,colaux;
Nodo aux;
for(int i=0;i<49;i++) {
}
if (n != null) //SI EL ÁRBOL CONTIENE NODOS...
{
cola=new Cola(); //SE INSTANCIA EL OBJETO COLA
colaux=new Cola(); //SE INSTANCIA EL OBJETO COLAAUX
cola.push(n); //SE INSERTA EL NODOARBOL "A" (RAIZ) COMO PRIMER NODO EN LA COLA
while (cola.colavacia()!=1) //MIENTRAS HAYAN ELEMENTOS EN LA COLA...
{
colaux.push(aux=(Nodo) cola.pop()); /*EL ELEMENTO EXTRAIDO DE LA COLA PRINCIPAL ES ASIGNADO
A AUX Y A SU VEZ INSERTADO EN LA COLA AUXILIAR*/
/*if (aux.izq != null) //SI EL HIJO IZQUIERDO DEL NODO ACTUAL EXISTE
{
cola.push(aux.izq); //SE INSERTA ESE HIJO COMO ELEMENTO SIGUIENTE EN LA COLA
}
if (aux.der!= null) //SI EL HIJO DERECHO DEL NODO ACTUAL EXISTE
{
cola.push(aux.der); //SE INSERTA ESE HIJO COMO ELEMENTO SIGUIENTE EN LA COLA
}
}
colaux.imprime(); //POR ÚLTIMO SE IMPRIME LA COLA AUXILIAR
}
} */
//metodo en PREORDEN
public void recorrerPre(Nodo n) {
if(n!=null) {
System.out.println(n.llave);
recorrerPre(n.izq);
recorrerPre(n.der);
}
}
//metodo en ORDEN
public void recorrerOrd(Nodo n) {
if(n!=null) {
recorrerOrd(n.izq);
System.out.println(n.llave);
recorrerOrd(n.der);
}
}
//metodo en PostOrden
public void recorrerPos(Nodo n) {
if(n!=null) {
recorrerPos(n.izq);
recorrerPos(n.der);
System.out.println(n.llave);
}
}
public class Nodo{
public Nodo padre;
public Nodo der,izq;
public String llave;
public Nodo siguiente;
public Nodo(String indice) {
llave=indice;
der=null;
izq=null;
padre=null;
}
}
}
Esta es mi clase Arbol
package estructura;
public class Cola extends Arbol {
Nodo frente,fin;
public Cola () {
frente=null;
fin=null;
}
/*public int colavacia() {
if(frente==null&&fin==null) {
return 1;
}return 0;
}*/
public void inser(Nodo c ) {
Nodo s=new Nodo(c.llave);
if(frente==null) {
frente=s;
frente.siguiente=null;
fin=s;
}else {
fin=s;
s.siguiente=null;
fin=s;
}
}
// pop
public void pop() {
}
public void imprime() {
Nodo k=new Nodo();
k=frente;
if(frente!=null) {
while(k!=null) {
System.out.println(" "+k.llave);
k=k.siguiente;
}
}else {
System.out.println("La cola se encuentra vacia1");
}
}
}
Esta es mi clase Cola
package estructura;
public class Main extends Arbol {
public static void main(String[] args) {
Arbol arbol=new Arbol();
Cola c1=new Cola();
arbol.insertar("maria");
arbol.insertar("maria");
arbol.insertar("oso");
arbol.insertar("do");
arbol.insertar("p");
arbol.insertar("maria");
System.out.println("****Recorrido en Pre-Orden****");
arbol.recorrerPre(arbol.raiz);
System.out.println("****Recorrido en Orden****");
arbol.recorrerOrd(arbol.raiz);
System.out.println("****Recorrido en Post-Orden****");
arbol.recorrerPos(arbol.raiz);
System.out.println("****Recorrido en Amplitud****");
c1.imprime();
System.out.println(" ");
System.out.println("****Recorrido en profundidad**** ");
}
}
Este es mi Main
Cita de: MAFUS en 3 Septiembre 2019, 18:47 PM
Veo un fallo en://...
//leer nombre hasta final del fichero
for (i=0;!feof(f);i++){
// Conseguir los nombres de los archivos y copiarlos en las estructuras
}
// copia la matricula con 9 digitos del fichero
fgets(temp,9,f);
// atoi: pasar numeros en cadenas de caracteres a enteros
li[i].alumnoLi[i].matricula=atoi(temp);
¿Qué elemento crees que apunta i? Compruébalo.
Por otra parte: la carga del número de matrícula está fuera del for.
Cita de: fary en 3 Septiembre 2019, 15:47 PMel contenido del archivo de texto (.txt) seria este:
Pasa el archivo Lista1.txt.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char profesor;
int materia;
struct alumno *alumnoLi;
}listas;
struct alumno{
char *nombre;
int matricula;
char fecha[30];
};
listas *li;
void vaciar(char temp[]);
void copiar(char temp[],int i);
int main(){
int i,j;
char temp[50];
int cont=0;
char aux;
FILE *f;
f=fopen("Lista1.txt","r");
if(f==NULL){
printf("no se ha podido abrir el archivo \n ");
exit(1);
}
while(!feof(f)){
fgets(temp,50,f);
cont++;
}
rewind(f);
li=(listas*)malloc(cont*sizeof(listas));
if(li==NULL){
printf("no se ha podido reservar espacio \n");
exit (1);
}
for (i=0; !feof(f); i++){
vaciar(temp);
aux='0';
for(j=0;aux != '-';j++ ){
aux=fgetc(f);
if(aux!='-'){
temp[j]=aux;
}
}
copiar(temp,i);
fgets(temp,4,f);
li->alumnoLi[i].matricula=atoi(temp);
printf("Nombre: %s Matricula: %i \n",li->alumnoLi[i].nombre,li->alumnoLi[i].matricula);
}
system("pause");
return 0;
}
void vaciar(char temp[]){
int i ;
for(i=0; i<50; i++){
temp[i] = '\0';
}
}
void copiar(char temp[],int i){
int N = strlen(temp) +1;
li->alumnoLi[i].nombre = (char*)malloc(N*sizeof(char));
if(li->alumnoLi[i].nombre == NULL){
printf("no se ha podido reservar meoria 2");
exit(1);
}
strcpy(li->alumnoLi[i].nombre,temp);
}
#include<stdio.h>
#define N 50
#include<string.h>
#include<stdlib.h>
typedef struct{
char profesor;
char materia;
typedef struct{
char *nombre;
int *matricula;
char fecha[30];
}alumno;
}lista;
lista *li;
void copiar(char temp[], int i);
void vaciar(char temp[]);
int main (){
}
void ingresarAlumno(){
int cont;
char temp[50];
int i,j;
char aux;
FILE *f;
f=fopen("Lista.txt","r");
if(f=NULL){
printf("ERROR \n");
exit(1);}
while(!feof(f)){
fgets(temp,50,f);
cont++;
}
rewind(f);
li=(lista*)malloc(cont*sizeof(lista));
if(li==NULL){
printf("NO se pude reservar la memoria");
exit(1);
}
for (i=0;!feof(f);i++){
vaciar(temp);
aux='0';
for(j=0;aux != '-';j++){
aux=fgetc(f);
if(aux != '-'){
temp[j]=aux;
}
}
copiar(temp,i);
}
fgets(temp,9,f);
li->alumno.matricula=atoi(temp);
printf("nombre; %s matricula: %i",li->alumno.nombre,li->alumno.matricula);
}
void vaciar(char temp[]){
int i;
for (i=0;i<50;i++){
temp[i]='\0';
}
}
void copiar(char temp[], int i){
int k = strlen(temp)+1;
li->alumno.nombre=(char*)malloc(k*sizeof(char));
if (li->alumno.nombre==NULL){
printf("ERROR");
exit(1);
}
strcpy(li->alumno.nombre,temp);
}