阿里云配置网站,手机上可以做网站,网站开发编程环境,国内卖到国外的电商平台题目来源:
代码部分#xff0c;参考官方题解的写法:
// 思路: 就是把原始链表#xff0c;拆分为2部分#xff0c;最后再拼接一下。struct ListNode* partition(struct ListNode* head, int x) {struct ListNode* small malloc(sizeof(struct ListNode));struct ListNode*…题目来源:
代码部分参考官方题解的写法:
// 思路: 就是把原始链表拆分为2部分最后再拼接一下。struct ListNode* partition(struct ListNode* head, int x) {struct ListNode* small malloc(sizeof(struct ListNode));struct ListNode* smallHead small;struct ListNode* big malloc(sizeof(struct ListNode));struct ListNode* bigHead big;while(head ! NULL) {if (head-val x) {small-next head;small small-next; // 这里先确定 small.next 的值。 然后再看 small 自身} else {big-next head;big big-next;}head head-next;}// 拼接big-next NULL;small-next bigHead-next;return smallHead-next;
}问题与思考:
对下面这个写法进行分析 struct ListNode* small malloc(sizeof(struct ListNode)); struct ListNode* smallHead small; 其中 small 是一个指针 而且申请内存了。 smallHead 也是一个指针smallHead 其实是把 small 复制一份。 所以这里在命名上我觉得不应该叫做 smallHead 叫做 smallCopy 比较合适。 while(head ! NULL)
这个写法能否写成: while(head) 答案是能。而且也能正常通过。 问题是 有什么区别
第三点已经写在代码注释里面了。 small-next head; small small-next; // 这里先确定 small.next 的值。 然后再看 small 自身 small small-next, 这个写法其实在python 中就是 head head.next, 之前写过很多 就是把节点往下移动往下传递。 为什么一到 C 语言里面 就觉得很陌生呢。