elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problema con manejo de nodos en linux
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema con manejo de nodos en linux  (Leído 1,460 veces)
abaadoon

Desconectado Desconectado

Mensajes: 19



Ver Perfil
problema con manejo de nodos en linux
« en: 10 Febrero 2016, 20:12 pm »

ayuda tengo un problema con este codigo al compilar en gcc

#include<stdio.h>
#include<stdlib.h>


void insertarnodoinicio();
void insertarnodoalfinal();
void insertarentrenodos();
void eliminarnodoinicio();
void eliminarnodofinal();
void eliminarentredosnodos();
void buscarnumero();
void mostrarnodo();


struct dato{
  dato *psig;
  int numero;
};

      dato *cab=NULL;
      dato *n=NULL;
      dato *aux=NULL;
      dato *p=NULL;
      dato *q;
      int x,pos,numerodenodos=0,opc;
      
      main()
      {
            do{
                  printf("\n************************* ELIGE UNA OPCION **********************************\n\n");
                  printf("                   1.-Insertar Un Nodo al Inicio\n");
                  printf("                   2.-Insertar Un Nodo al Final\n");
                  printf("                   3.-Insertar entre dos Nodos\n");
                  printf("                   4.-Mostrar Lista\n");
                  printf("                   5.-Buscar Nodo\n");
                  printf("                   6.-Eliminar Nodo al Inicio\n");
                  printf("                   7.-Eliminar Nodo Final\n");
                  printf("                   8.-Eliminar Entre dos nodos\n");
                  printf("                   9.-Salir\n");      
                  printf("\n\nTeclee su opcion: ");
                  scanf("%d",&opc);
                                    
                  switch(opc){
                              case 1:
                              insertarnodoinicio();
                              break;
                                                    
                              case 2:
                              insertarnodoalfinal();
                              break;
                                                
                              case 3:
                              insertarentrenodos();
                              break;
                                                    
                              case 4:    
                              mostrarnodo();
                              break;
                              
                              case 5:
                              buscarnumero();
                              break;
                              
                              case 6:
                              eliminarnodoinicio();
                              break;
                              
                              case 7:
                              eliminarnodofinal();
                              break;
                              
                              case 8:
                              eliminarentredosnodos();
                              break;
                              
                              case 9:
                              exit(0);break;              
                              
                              default:
                              printf("Opcion no valida");break;    
                           }
                              
                                    }while(opc!=9);
                                    getch();
                                    
                                      
                                    }
                            
                            
                            
void eliminarentredosnodos()
{
     q=cab;
     int h=1;
     if (cab=NULL)
    
                  printf("La lista esta vacia");
                  
                  
              else
                  {
             printf("Ingrese Nodo a eliminar: ");
             scanf("%d",&x);
             while (q->numero!=x && h==1)
             {
             if (q->psig!=NULL)
             {
                               p=q;
                               q=q->psig;
                               }                                              
             else
                  
             h=0;
             }
                  if (p->psig==NULL)
                  printf("Elemento no Encontardo");
                  else
                  {
                      if (cab=q)
                      cab=q->psig;
                      else
                      p->psig=q->psig;
                  }
                  
                  delete(q);
       }
                                    
     getch();
     system("CLS");
 }
                            
                            
        
                            
void eliminarnodofinal()
{
     p=cab;
     if (cab==NULL)
     printf("No hay Numeros en la lista");
    if (cab->psig==NULL)
    {
        delete (cab);
        cab=NULL;
        }
    
     else
     {
        
    while(p->psig!=NULL)
    {
    aux=p;
    p=p->psig;
}
    aux->psig=NULL;
    delete p;
    numerodenodos--;
}
 getch();
 system("cls");    
}






void eliminarnodoinicio()
{
    
     if (cab==NULL)
     printf("No hay numeros que eliminar");
     else
     {
      
         aux=cab;
         cab=cab->psig;
         delete (aux);
         aux=NULL;
         numerodenodos--;
}    
 getch();
 system("cls");    
}
 
 
            
void buscarnumero()
{
     int eli;
      if (cab==NULL)
      {
     printf("No hay numeros en la lista");
     }
     else
     {
     q=cab;
     printf("Que Numero desea buscar: ");
     scanf("%d",&x);
     pos=1;
     while(q!=NULL && q->numero!=x)
     {
     q=q->psig;
     pos++;
     }
    
     if (q!=NULL)
     printf("%d Esta en la lista y en la posicion %d\n",x,pos);
    
    
     else
     {
          printf("%d No esta en la lista\n",x);
          
          }    
}    

 getch();
 system("cls");    
    
 }
                  
 void insertarnodoinicio(){
 n=(dato*)malloc(sizeof (struct dato));
 printf("\nElementos a insertar: ");
 scanf("%d",&x);
 n->numero=x;
 n->psig=NULL;
 if(cab==NULL)
 cab=n;
                                                      
 else{
 n->psig=cab;
 cab=n;
 }
 numerodenodos++;
                                                      
 system("CLS");
                                                      
 }
            
 void mostrarnodo()
 {
 if(cab==NULL)
 printf("Lista vacia.........\n");
                                        
 else{
 p=cab;
 printf("\nLista de numeros...\n");
 while(p!=NULL){
 printf("\n%d\n",p->numero);
 p=p->psig;
 }
 printf("\nEl numero de nodos es: %d ",numerodenodos);
                                                    
                                                      
 }
 getch();
 system("CLS");
 }
                                        
 void insertarnodoalfinal()
 {
 n= (dato*)malloc(sizeof(dato));
 printf("Ingresa dato:  ");
 scanf("%d",&x);
 n->numero=x;
 n->psig=NULL;
 if(cab==NULL){
 cab=n;
 numerodenodos++;
 }
 else{
 p=cab;
 while(p->psig!=NULL)
 {
 p=p->psig;
 }
 p->psig=n;
 numerodenodos++;
 }
 getch();
 system("CLS");
                                            
 }
                                  
   void insertarentrenodos()
 {
      if(cab==NULL)
      printf("No hay  elementos");
      else
      {
          
          
             printf("Ingrese la posicion en que desees insertar: ");
             scanf("%d",&pos);
            
             if(pos> numerodenodos || pos==1)
             printf("Solamente es valido entre 2 nodos");
             else
             {
                 n=(dato*)malloc(sizeof(dato));
                 printf("Ingresa dato: ");
                 scanf("%d",&x);
                 n->numero=x;
                 n->psig=NULL;
                              aux=cab;
                 for(int i=1; i<pos-1; i++)
                
             {
                 aux=aux->psig;
                 }
                 n->psig=aux->psig;
                 aux->psig=n;
                  numerodenodos++;
                 }
                 }
                 getch();
                 system("cls");
 }


tengo este programa pero tengo un error cuando intento compilar con gcc me marca lo siguiente alguien ayuda
ListasSimples.c:16:3: error: unknown type name ‘dato’
   dato *psig;
   ^
ListasSimples.c:20:7: error: unknown type name ‘dato’
       dato *cab=NULL;
       ^
ListasSimples.c:21:7: error: unknown type name ‘dato’
       dato *n=NULL;
       ^
ListasSimples.c:22:7: error: unknown type name ‘dato’
       dato *aux=NULL;
       ^
ListasSimples.c:23:7: error: unknown type name ‘dato’
       dato *p=NULL;
       ^
ListasSimples.c:24:7: error: unknown type name ‘dato’
       dato *q;
       ^
ListasSimples.c:27:7: warning: return type defaults to ‘int’ [-Wimplicit-int]
       main()
       ^
ListasSimples.c: In function ‘main’:
ListasSimples.c:84:37: warning: implicit declaration of function ‘getch’ [-Wimplicit-function-declaration]
                                     getch();
                                     ^
ListasSimples.c: In function ‘eliminarentredosnodos’:
ListasSimples.c:104:22: error: request for member ‘numero’ in something not a structure or union
              while (q->numero!=x && h==1)
                      ^
ListasSimples.c:106:19: error: request for member ‘psig’ in something not a structure or union
              if (q->psig!=NULL)
                   ^
ListasSimples.c:109:35: error: request for member ‘psig’ in something not a structure or union
                                q=q->psig;
                                   ^
ListasSimples.c:115:24: error: request for member ‘psig’ in something not a structure or union
                   if (p->psig==NULL)
                        ^
ListasSimples.c:120:28: error: request for member ‘psig’ in something not a structure or union
                       cab=q->psig;
                            ^
ListasSimples.c:122:24: error: request for member ‘psig’ in something not a structure or union
                       p->psig=q->psig;
                        ^
ListasSimples.c:122:32: error: request for member ‘psig’ in something not a structure or union
                       p->psig=q->psig;
                                ^
ListasSimples.c:125:19: warning: implicit declaration of function ‘delete’ [-Wimplicit-function-declaration]
                   delete(q);
                   ^
ListasSimples.c: In function ‘eliminarnodofinal’:
ListasSimples.c:140:12: error: request for member ‘psig’ in something not a structure or union
     if (cab->psig==NULL)
            ^
ListasSimples.c:149:12: error: request for member ‘psig’ in something not a structure or union
     while(p->psig!=NULL)
            ^
ListasSimples.c:152:8: error: request for member ‘psig’ in something not a structure or union
     p=p->psig;
        ^
ListasSimples.c:154:8: error: request for member ‘psig’ in something not a structure or union
     aux->psig=NULL;
        ^
ListasSimples.c:155:5: error: unknown type name ‘delete’
     delete p;
     ^
ListasSimples.c: In function ‘eliminarnodoinicio’:
ListasSimples.c:176:17: error: request for member ‘psig’ in something not a structure or union
          cab=cab->psig;
                 ^
ListasSimples.c: In function ‘buscarnumero’:
ListasSimples.c:200:24: error: request for member ‘numero’ in something not a structure or union
      while(q!=NULL && q->numero!=x)
                        ^
ListasSimples.c:202:9: error: request for member ‘psig’ in something not a structure or union
      q=q->psig;
         ^
ListasSimples.c: In function ‘insertarnodoinicio’:
ListasSimples.c:223:5: error: ‘dato’ undeclared (first use in this function)
  n=(dato*)malloc(sizeof (struct dato));
     ^
ListasSimples.c:223:5: note: each undeclared identifier is reported only once for each function it appears in
ListasSimples.c:223:10: error: expected expression before ‘)’ token
  n=(dato*)malloc(sizeof (struct dato));
          ^
ListasSimples.c:226:3: error: request for member ‘numero’ in something not a structure or union
  n->numero=x;
   ^
ListasSimples.c:227:3: error: request for member ‘psig’ in something not a structure or union
  n->psig=NULL;
   ^
ListasSimples.c:232:3: error: request for member ‘psig’ in something not a structure or union
  n->psig=cab;
   ^
ListasSimples.c: In function ‘mostrarnodo’:
ListasSimples.c:250:19: error: request for member ‘numero’ in something not a structure or union
  printf("\n%d\n",p->numero);
                   ^
ListasSimples.c:251:5: error: request for member ‘psig’ in something not a structure or union
  p=p->psig;
     ^
ListasSimples.c: In function ‘insertarnodoalfinal’:
ListasSimples.c:263:6: error: ‘dato’ undeclared (first use in this function)
  n= (dato*)malloc(sizeof(dato));
      ^
ListasSimples.c:263:11: error: expected expression before ‘)’ token
  n= (dato*)malloc(sizeof(dato));
           ^
ListasSimples.c:266:3: error: request for member ‘numero’ in something not a structure or union
  n->numero=x;
   ^
ListasSimples.c:267:3: error: request for member ‘psig’ in something not a structure or union
  n->psig=NULL;
   ^
ListasSimples.c:274:9: error: request for member ‘psig’ in something not a structure or union
  while(p->psig!=NULL)
         ^
ListasSimples.c:276:5: error: request for member ‘psig’ in something not a structure or union
  p=p->psig;
     ^
ListasSimples.c:278:3: error: request for member ‘psig’ in something not a structure or union
  p->psig=n;
   ^
ListasSimples.c: In function ‘insertarentrenodos’:
ListasSimples.c:301:21: error: ‘dato’ undeclared (first use in this function)
                  n=(dato*)malloc(sizeof(dato));
                     ^
ListasSimples.c:301:26: error: expected expression before ‘)’ token
                  n=(dato*)malloc(sizeof(dato));
                          ^
ListasSimples.c:304:19: error: request for member ‘numero’ in something not a structure or union
                  n->numero=x;
                   ^
ListasSimples.c:305:19: error: request for member ‘psig’ in something not a structure or union
                  n->psig=NULL;
                   ^
ListasSimples.c:310:25: error: request for member ‘psig’ in something not a structure or union
                  aux=aux->psig;
                         ^
ListasSimples.c:312:19: error: request for member ‘psig’ in something not a structure or union
                  n->psig=aux->psig;
                   ^
ListasSimples.c:312:29: error: request for member ‘psig’ in something not a structure or union
                  n->psig=aux->psig;
                             ^
ListasSimples.c:313:21: error: request for member ‘psig’ in something not a structure or union
                  aux->psig=n;


En línea

furciorifa

Desconectado Desconectado

Mensajes: 94


Ver Perfil
Re: problema con manejo de nodos en linux
« Respuesta #1 en: 11 Febrero 2016, 03:54 am »

Código
  1. struct dato{
  2.  dato *psig;
  3.  int numero;
  4. };

corrije eso por
Código
  1. struct dato{
  2.          struct dato* psig;
  3.          int numero;
  4. }
  5.  


« Última modificación: 11 Febrero 2016, 03:56 am por furciorifa » En línea

abaadoon

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Re: problema con manejo de nodos en linux
« Respuesta #2 en: 12 Febrero 2016, 04:19 am »

ya encontre el error lo deje de esta manera; donde puedo darte puntos?

typedef struct datos_alumnos{
   char numControl[30];
   char nombre[30];
   float calificacion;
   struct datos_alumnos *next;
}DATOS;
« Última modificación: 12 Febrero 2016, 04:23 am por abaadoon » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema con el manejo de archivos
PHP
darkxxx 2 1,924 Último mensaje 9 Octubre 2007, 23:44 pm
por Ertai
Tutos: obtener datos y manejo de windows con c#... tuto_1: manejo de procesos
Scripting
tongoxcore 2 9,072 Último mensaje 21 Julio 2008, 23:44 pm
por Zaraki_lkenpachi
Manejo de Señales en Linux(resuelto)
Programación C/C++
Tha_Traker 4 6,055 Último mensaje 17 Agosto 2010, 12:58 pm
por Tha_Traker
Consulta sobre manejo de memoria en Linux
GNU/Linux
jos3 1 3,209 Último mensaje 22 Febrero 2011, 05:55 am
por Foxy Rider
Manejo de teclas especiales en Linux. C.
Programación C/C++
n-utz 1 1,658 Último mensaje 18 Abril 2017, 01:02 am
por do-while
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines