题解 | #牛牛的单向链表#

牛牛的单向链表

https://www.nowcoder.com/practice/95559da7e19c4241b6fa52d997a008c4

#include<iostream>
using namespace std;
struct ListNode {
    int val;
    ListNode* next;
    ListNode(int x): val(x), next(NULL) {}
};
ListNode* creatlist(int* arr, int n) {
    ListNode* dummyhead = new ListNode(0);  //创建哑结点
    ListNode* p = dummyhead;
    for (int i = 0; i < n; i++) {
        p->next = new ListNode(*(arr + i));
        p = p->next;
    }
    return dummyhead->next;
}
void printLinkedNode( const ListNode*
                      head) { //const在*的左边,左定值确保指针指向的值不会被更改
    while (head != NULL) {
        cout << head->val << " ";
        head = head->next;
    }
}

int main() {
    int n;
    cin >> n;
    int* arr = (int*)malloc(n * sizeof(int));
    for (int i = 0; i < n; i++) {
        cin >> *(arr + i);
    }
    ListNode*  p = creatlist(arr, n);
    printLinkedNode(p);
}

本程序实现了将数组转化为链表的功能。创建链表的过程中,dummyhead为"哑结点”,这样即便链表初始状态为空,也可以通过哑结点访问,避免了分类讨论。同时使用struct中的构造函数,使得程序更加简化。

#题解##日常学习打卡#
全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务