link_t* reverse_link2(link_t *head) {
link_t* newNode = (link_t*)malloc(sizeof(link_t));
memset(newNode, 0, sizeof(newNode));
newNode->next = NULL;
link_t* temp = head;
while (temp) {
link_t* next = temp->next;
temp->next = newNode;
newNode = temp;
temp = next;
}
temp = newNode;
if (temp->next == NULL) {
free(temp);
return newNode;
}
while (temp->next->next) {
temp = temp->next;
}
link_t* cur = temp;
free(temp->next);
cur->next = NULL;
return newNode;
}