Ok so it's all deleting the nodes fine and updating the links, except when i go to remove the 1st node - it has a problem. Could someone please examine what i'm doing wrong.

Code:
void ring::remove(int x)
{

node *newnode = current;
node *temp = current; 
node *start = current;
node *longlinker = NULL;
node *shortdata = current; // this references to the first deleted node and will need it for testing longlink functionality
int number = 0; 


for (int i = 1; i < length; i++) // this for loop is used for creating the short link - for .e.g if node 4 is deleted, then node 3 points to 5 and not 3
      {
      temp = temp -> shortlink;
      }

if (newnode -> num == x)
{
start = start -> shortlink;
//number = current -> num;
current = current -> shortlink;
//number = temp -> num; 
temp = start;
newnode = start;
length--;
}
else


for (int p = 1 ; p < length; p++)
{
if (newnode -> shortlink -> num == x)
	{
		temp = newnode -> shortlink;
 		number = temp -> shortlink -> num;
        	newnode -> shortlink = newnode -> shortlink -> shortlink;
            longlinker = newnode -> shortlink;
		//delete newnode;		
		length--;
	}
else 
newnode = newnode -> shortlink;
}

for (int y = 1; y <= length; y++)
{
if (longlinker -> longlink -> num == temp -> num)
{
longlinker -> longlink -> num = temp -> longlink -> num;
}
else
longlinker = longlinker -> shortlink;
}

}