讨论/题目交流/求大佬指出代码的错误/
求大佬指出代码的错误

图片.png

图片.png

在自己机子上执行没有问题,是 C 语言。

typedef struct ListNode* List;
typedef struct ListNode* Position;

List
recursion( Position node, int *n )
{
	if ( node != NULL )
	{
		node->next = recursion( node->next, n );
		( *n )--;

		if ( *n == -1 )
		{
			Position tmp = NULL;
			
			tmp = node->next;
			node->next = tmp->next;
			
			tmp->next = NULL;
			free( tmp );
		}
	}
	return node;
}

List
removeNthFromEnd( List head, int n )
{
	recursion( head, &n );
	return head;
}
展开讨论
JosehpJohnston发起于 2020-01-30
最近编辑于 2020-02-01

搞定了,如上面的大佬所说,输入没有假定含头节点。

typedef struct ListNode* List;
typedef struct ListNode* Position;

List
recursion( Position node, int *n )
{
	if ( node != NULL )
	{
		node->next = recursion( node->next, n );
		( *n )--;

		if ( *n == -1 )
		{
			Position tmp = NULL;
			
			tmp = node->next;
			node->next = tmp->next;
			
			tmp->next = NULL;
			free( tmp );
		}
	}
	return node;
}

List
removeNthFromEnd( List head, int n )
{
	List Head = NULL;
	Head = malloc( sizeof( struct ListNode ) );
	Head->next = head;
	
	Head = recursion( Head, &n );
	return Head->next;
}

图片.png

展开全部 2 讨论