Please check this code and tell me what's the problem with it...
#include <iostream.h>
#include <stdlib.h>
#include <fstream.h>
#include <string.h>
struct nodo1{
char *nombre;
int contador;
struct nodo1 *next;
struct nodo2 *sig;
};
struct nodo2{
int x;
struct nodo2 *sig;
};
typedef struct nodo1 reg1;
typedef struct nodo2 reg2;
reg2* nuevo_linea(int linea){
reg2 *nuevo2;
nuevo2=(reg2 *)new reg2;
nuevo2->x=linea;
nuevo2->sig=NULL;
return nuevo2;
}
reg1* nuevo_nodo1(char *a,int tam,int linea){
reg1 *nuevo;
nuevo=(reg1 *)new reg1;
nuevo->nombre=new char[tam];
strcpy(nuevo->nombre,a);
nuevo->contador=1;
nuevo->next=NULL;
reg2 *nuevo_lista=nuevo_linea(linea);
nuevo->sig=nuevo_lista;
return nuevo;
}
void main(){
reg1 *lista=NULL;
char a[10];
int linea=1,tam;
ifstream archivo("entrada2.txt");
while(!archivo.eof()){
archivo>>a;
tam=strlen(a);
reg1 *aux=lista;
if(a[0]==13)//sumar las lineas
linea++;
reg1 *nuevo=nuevo_nodo1(a,tam,linea);
if(lista==NULL){//crear primer elemento
lista=nuevo;
}
if(strcmp(nuevo->nombre,lista->nombre)<0){
nuevo->next=lista;
lista=nuevo;
}
while(aux->next!=NULL){
if(strcmp(nuevo->nombre,aux->nombre)==0){
aux->contador++;
reg2 *nuevo2=nuevo_linea(linea);
reg2 *aux2=aux->sig;
while(aux->sig->sig!=NULL){
aux2=aux2->sig;
}
aux2->sig=nuevo2;
}
else
aux=aux->next;
}
aux=lista;
while(aux->next!=NULL){
if((strcmp(nuevo->nombre,aux->next->nombre))>0)
aux=aux->next;
else
break;
}
nuevo->next=aux->next;
aux->next=nuevo;
}
archivo.close();
reg1 *aux=lista;
reg2 *aux2;
aux2=aux->sig;
while(aux->next!=NULL){
cout<<endl<<" | "<<aux->nombre<<" | "<<aux->contador;
while(aux2->sig!=NULL){
cout<<" | "<<aux2->x;
if(aux2->sig->sig!=NULL)
cout<<", ";
aux2=aux2->sig;
}
aux=aux->next;
aux2=aux->sig;
}
}
