题解 | #重排链表#

重排链表

https://www.nowcoder.com/practice/3d281dc0b3704347846a110bf561ef6b

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

/**
 * 
 * @param head ListNode类 
 * @return  void
 */

void reorderList(struct ListNode* head ) {
    
    int nodeNum = 0;
    int i = 0;
    struct ListNode *temp = head;
    struct ListNode **nodeArry = NULL;

    if ((head == NULL) || (head->next == NULL)){
        return;
    }

    while (temp != NULL){
        nodeNum++;
        nodeArry = (struct ListNode **)realloc(nodeArry, (nodeNum * sizeof(struct ListNode *)));
        nodeArry[(nodeNum - 1)] = temp;
        temp = temp->next;
    }

    for (i = nodeNum - 1; i >= nodeNum / 2; i--){
        nodeArry[nodeNum - 1 - i]->next = nodeArry[i];
        nodeArry[i]->next = nodeArry[nodeNum - i];
    }
    nodeArry[i + 1]->next = NULL;
}




全部评论

相关推荐

10-15 16:27
门头沟学院 C++
LeoMoon:建议问一下是不是你给他付钱😅😅
点赞 评论 收藏
分享
小火柴燃烧吧:接啊,接了之后反手在咸鱼找个大学生搞一下,量大从优
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务