Your loop variable is an unsigned int. You set it to "-1" which sets it to 65535. No wonder it takes a long time.
It is usually a bad sign if you feel the need to modify the loop variable inside the loop.
Looks like you were trying to solve the problem that the 'previous pixel' is strange at the start of the string. Try something like this, where a single 'if' statement takes care of the single strange case.
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, c); // Turn on pixel 'i'
int previousPixel = i-1;
if (i == 0)
previousPixel = strip.numPixels() - 1; // Last Pixel
strip.setPixelColor(previousPixel, strip.Color(0, 0, 0)); // Turn off previous pixel
strip.show();
delay(wait);
}