题解 | #从尾到头打印链表#

从尾到头打印链表

http://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035

JZ6 从尾到头打印链表:思路:

先将链表反转,再将反转后的链表存储在新创建的数组中,最后返回数组的首地址。

实例代码如下:

int* printListFromTailToHead(struct ListNode* listNode, int* returnSize ) 
{
    int count=0;
    if(listNode==NULL)
    //判断结点是否为空指针
    {
        return listNode;
    }
    
    struct ListNode* newHead=NULL;
    struct ListNode* pHead=listNode;
    struct ListNode* cur=pHead->next;
    while(pHead!=NULL)
    {
        pHead->next=newHead;
        count+=1;
        //计算结点的个数,以此为依据来为数组开辟对应大小的空间
        newHead=pHead;
        pHead=cur;
        if(cur!=NULL)
        {
            cur=cur->next;
        }
    }
    //反转链表
    
    int i=0;
    int* arr=(int*)malloc(count*sizeof(int));
    //为数组开辟足够的空间
    
    while(i<count)  
    //将反转后的值存储在数组中
    {
         arr[i]=newHead->val;
         newHead=newHead->next;  
         i+=1;
    }
    
    *returnSize=count;
    //改变输出型参数的值
    
    return arr;
    //返回数组的首地址
}
全部评论

相关推荐

2 收藏 评论
分享
牛客网
牛客企业服务