He intenta lo siguiente:
lista+=5; pero no funciona
lista+=(sizeof(estrcutura)*5); tampoco me funciona
Quisiera saber como se le puede hacer para brincarse directamente a una determinada posicion sin necesidad de un ciclo.
dejo el codigo:
Código
#include <stdio.h>
#include <stdlib.h>
int total=0;
struct numeros{
int num;
struct numeros *sig;
} *head=NULL, *final=NULL;
numeros *crear(int num)
{
numeros *n=NULL;
n=(numeros *) malloc(sizeof(numeros));
n->num=num;
n->sig=NULL;
return n;
}
void insertar(int dato)
{
numeros *n=crear(dato);
if(head==NULL)
head=final=n;
else
{
final->sig=n;
final=n;
}
total++;
}
int busqueda(int buscar)
{
numeros *tmp=NULL;
int inf=0;
int sup=total;
int centro=0;
while(inf<=sup)
{
tmp=head;
centro=(sup+inf)/2;
tmp+=(sizeof(numeros)*centro); //tampoko funciona tmp+=centro;
if((tmp->num)==buscar)
return tmp->num;
if((tmp->num)>buscar)
sup=centro-1;
else
inf=centro+1;
}
}
main()
{
insertar(1);
insertar(2);
insertar(3);
insertar(4);
insertar(5);
insertar(6);
insertar(7);
insertar(8);
insertar(9);
printf(" %d ",busqueda(3));
system("pause");
}










Autor



En línea
