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;
}