关于网站开发的文章,湖南网站建设公司排名,wordpress爆力,宣传片拍摄制作报价明细分割链表
给你一个链表的头节点 head 和一个特定值 x #xff0c;请你对链表进行分隔#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。
你不需要 保留 每个分区中各节点的初始相对位置。
示例 1#xff1a; 输入#xff1a;head [1,4,3,2,5,2], x…分割链表
给你一个链表的头节点 head 和一个特定值 x 请你对链表进行分隔使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。
你不需要 保留 每个分区中各节点的初始相对位置。
示例 1 输入head [1,4,3,2,5,2], x 3
输出[1,2,2,4,3,5]示例 2
输入head [2,1], x 2
输出[1,2]提示
链表中节点的数目在范围 [0, 200] 内-100 Node.val 100-200 x 200 代码
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode;
struct ListNode* partition(struct ListNode* head, int x){if(headNULL){return head;}//创建带头的大小链表ListNode*lessHead,*lessTail,*greaterHead,*greaterTail;//大小链表的哨兵卫lessHeadlessTail(ListNode*)malloc(sizeof(ListNode));greaterHeadgreaterTail(ListNode*)malloc(sizeof(ListNode));ListNode*curhead;//遍历原链表将结点放到大小链表中while(cur){if(cur-valx){//放到小链表中lessTail-nextcur;lessTaillessTail-next;}else{//放到大链表中greaterTail-nextcur;greaterTailgreaterTail-next;}curcur-next;}if(greaterTail){greaterTail-nextNULL;}//小链表的尾和大链表的头第一个有效结点连接起来lessTail-nextgreaterHead-next;//把动态开辟的空间释放掉free(greaterHead);ListNode*retheadlessHead-next;free(lessHead);return rethead;
}理解exit
1、exit的功能为退出当前运行的程序并将参数value返回给主调进程。 2、exit(0)exit(1) 和 exit(-1)的区别
exit(0)表示程序正常退出除了0之外其他参数均代表程序异常退出如exit(1),exit(-1)。exit(1)和exit(-1)是分别返回1和-1到主调程序。exit(0)则是返回0。exit(0)表示程序正常退出非0表示非正常退出。 3、return与exit的区别 return是语言级别的它表示了调用堆栈的返回而exit是系统调用级别的它表示了一个进程的结束。
return和exit作用大致相同。
在main中
return v; 与 exit(v); 的效果相同。
但是在其它功能函数中就会有所区别
return会跳出函数而exit会结束程序。 即 return是返回函数调用如果返回的是main函数则为退出程序 exit是在调用处强行退出程序运行一次该程序就被强制结束 。 4、通常可以借助exit()的返回值判断程序结束状态
0表示程序正常退出,
其它值是异常退出,
在退出前可以给出一些提示信息方便在调试程序时察看出错原因。