64,700
社区成员
发帖
与我相关
我的任务
分享
node* result = NULL;
node* fun(node * head, int index)
{
if ((NULL == head) || (0 == index))
{
return head;
}
(void)travel_list(head, n);
return result;
}
int travel_list(node* cur, int n)
{
int length = 0;
if (NULL == cur)
{
return 0;
}
int len = travel_list(cur->next, n) + 1; // 获取余下节点个数,然后加1
if (n == len)
{
result = cur; // 如果当前链表长度为n,则保存当前节点;
}
return len;
}
node fun(node* head, int k){
node* ret=NULL;
recurFind(head,k,ret);
return ret;
}
int recurFind(node* head,int k, node* &ret){
int pos=(head==NULL?0:1+recurFind(head->next,k,ret));
if(pos==k){
ret=head;
}
return pos;
}
node fun(node* head, int index)
{
int i=0;
node* pNode = head;
node* buffer[index];
memset(buffer,NULL,index);
while ( pNode != NULL){
buffer[i % index] = pNode ;
pNode = pNode -> next;
i++;
}
if( i < index )
return NULL;
return (*buffer[(i - index) % index]);
}