Стек очень похож на набор посуды, которую моют и ставят друг на друга. Это первый вход, последний выход (тип данных FILO). То есть, если ваш стек читается в 2, 7, 8, он будет выглядеть так:
8
7
2
То есть сначала 2 помещается в стек, затем 7, а затем 8. Если вы хотите удалить или вытолкнуть стек, вам нужно переместить головку указателя. Ваш код выглядит немного странно для меня ...
int Stack::remove()
{
int datum; //to store the popped value
node* temp=head; //assign pointer to head of list
datum = temp->data; //grab the data value stored at the head (or temp since they carry same reference)
head = temp->next; //move the head pointer (in our example now it points to 7)
delete temp;
return datum;
}