Lista simplemente ligada con arreglos

Denunciar
-
Hola,

Necesito ayuda con mi programa, hice mi funcion remover, pero no funciona, necesito agregar una funcion que busque el nombre del registro y si se encuentra mostrar todos los datos del registro.

#include <stdio.h>
#include <string.h>

const int MaxData=10;

struct Address
{
char name[50];
char street[100];
char city[50];
char state[20];
int pin;
} data[10];

int head=0;
int actual=0;
int ultimo=0;

void inserta()
{
ultimo++;
fflush(stdin);
printf("\tGive the name ");
gets(data[ultimo].name);
printf("\tGive the city ");
gets(data[ultimo].city);
printf("\tEstado: ");
gets(data[ultimo].state);
printf("\tPin: ");
scanf("%i",&data[ultimo].pin);
printf("\t");
system("pause");
system("cls");
}

void siguiente()
{
printf("\n\tName: %s\n", data[actual].name);
printf("\tCity: %s\n", data[actual].city);
printf("\tState: %s\n", data[actual].state);
printf("\tpin: %i\n\n", data[actual].pin);
actual++;

if (actual >MaxData || actual>ultimo)
{
printf ("\tA llegado al ultimo nodo\n");
actual--;
}
printf("\t");
system("pause");
system("cls");
}


void imprimeLista()
{
int i;
actual=head;

for(i=head; i<= ultimo; i ++)
siguiente();
}

void remover()
{
system("cls");
int indice;
printf("\tQue nodo quieres remover?\n\t");
scanf("%i", &indice);
indice--;
if (indice > ultimo || indice <head )
{
printf("\tindice fuera de rango");
return;
}
int i;
for(i=indice; i<=ultimo; i++)
{
strcpy(data[i].name, data[i+1].name);
strcpy(data[i].city, data[i+1].city);
strcpy(data[i].street, data[i+1].street);
strcpy(data[i].state, data[i+1].state);
data[i].pin=data[i+1].pin;
}
if(indice == MaxData-1)
{
strcpy(data[indice].name,"");
strcpy(data[indice].city,"");
strcpy(data[indice].street,"");
strcpy(data[indice].state,"");
data[indice].pin-0;
}
ultimo--;
actual=head;
printf("\t");
system("pause");
system("cls");
}

int main()
{
int opcion;

strcpy(data[0].name, "Jhon Brown");
strcpy(data[0].street, "5th");
strcpy(data[0].city, "NY");
strcpy(data[0].state, "NY");
strcpy(data[1].name, "Ana");
strcpy(data[1].street, "alcalde");
strcpy(data[1].city, "Gdl");
strcpy(data[1].state, "Jal");
ultimo=1;

while(opcion!=5)
{
printf("\tQue opcion deseas: \n\t1-inserta \n\t2-imprime lista \n\t3-siguiente nodo \n\t4-Remover \n\t5-salir\n\n\tOpcion: ");
scanf("%i", &opcion);

switch(opcion)
{
case 1:
system("cls");
inserta();
break;
case 2:
system("cls");
imprimeLista();
break;
case 3:
system("cls");
siguiente();
break;
case 4:
system("cls");
remover();
break;
case 5:
break;
default:
printf("\tEsa opcion no existe...\n");
}
}
return 0;
}