合并数组从后往前找大,,这个L 1 L2排着往后走,谁小放下来,剩的也放下来
如果改变指针指向太麻烦前后都要改,所以采用这个思路
建立一个新链表newhead newptail指向头尾 初始都指向NULL,第一个节点尾插过来即为头也为尾,然后往newtail 的next指针尾插,newtail往下走。。。。
newtail是空不能解引用所以报错,
两个连边可能都是NULL,也可能一个
list1是NULL,返回list2 lst2是 返回list1每次都要判断头节点为不为空
就不用判断为不为NULL
就不能直接把NEW head返回,会在链表头部产生一个随机的值
但是malloc需要释放为什么没报错,牛客网远程程序运行完会自动释放,我们要养成释放习惯约瑟夫问题可以用数组,数组里没小于0的数字,报到数的置0,找到最后一个数据时,从数组下表0位置继续报数,杀完之后,继续遍历一次数组看看谁不为0,就是返回编号
另一个思路:环形链表pcur首节点prev前一个,pcur数1,下一个数2,pcur走到2,prev也要继续往前走保存pcur的前一个结点 现在2要销毁 prev就指向pcur下一个节点然后释放pcur就可以继续叔叔,让pcur走向prev的next位置,然后数1,3数1,4数2,3指向5再删4释放掉....继续,最后3节点指向自己
prev走向pcur,pcur往下走,报2 prev就指向pcur下一个节点然后释放pcur然后pcur指向prev指向的节点数1,prev=pcur,然后pcur继续走,pcur数2释放.........
剩的节点就是要返回的节点
if exit 1可写可不写一般不会失败
phead数1,我必须知道他的前驱节点,因为下一个数二要让这个前驱节点指向 后一个节点如果返回phead不知道前一个结点,返回patail
pcur指向第一个节点那么count为1报数1