• c语言练习94:分割链表


    分割链表

    给你一个链表的头节点 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

     

     

    代码:

    1. /**
    2. * Definition for singly-linked list.
    3. * struct ListNode {
    4. * int val;
    5. * struct ListNode *next;
    6. * };
    7. */
    8. typedef struct ListNode ListNode;
    9. struct ListNode* partition(struct ListNode* head, int x){
    10. if(head==NULL){
    11. return head;
    12. }
    13. //创建带头的大小链表
    14. ListNode*lessHead,*lessTail,*greaterHead,*greaterTail;
    15. //大小链表的哨兵卫
    16. lessHead=lessTail=(ListNode*)malloc(sizeof(ListNode));
    17. greaterHead=greaterTail=(ListNode*)malloc(sizeof(ListNode));
    18. ListNode*cur=head;
    19. //遍历原链表,将结点放到大小链表中
    20. while(cur){
    21. if(cur->val
    22. //放到小链表中
    23. lessTail->next=cur;
    24. lessTail=lessTail->next;
    25. }
    26. else{
    27. //放到大链表中
    28. greaterTail->next=cur;
    29. greaterTail=greaterTail->next;
    30. }
    31. cur=cur->next;
    32. }
    33. if(greaterTail){
    34. greaterTail->next=NULL;
    35. }
    36. //小链表的尾和大链表的头(第一个有效结点)连接起来
    37. lessTail->next=greaterHead->next;
    38. //把动态开辟的空间释放掉
    39. free(greaterHead);
    40. ListNode*rethead=lessHead->next;
    41. free(lessHead);
    42. return rethead;
    43. }

     

     

     

    理解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表示程序正常退出,

    其它值是异常退出,

    在退出前可以给出一些提示信息,方便在调试程序时察看出错原因。

     

  • 相关阅读:
    some和every
    关于栈迁移的那些事儿
    Go语言excelize包-02-工作表操作
    汽车流通行业4S门店生存性指标:零服吸收率
    免费活动-11月4日敏捷武林上海站 | Scrum.org CEO 亲临现场
    持续交付知易行难,想做成这事你要理解这几个关键点
    Java 入门-02-人机交互-图形化界面的小故事
    Bloc入门之Cubit详解
    c++ || STL关联式容器
    VoLTE基础自学系列 | VoLTE中的DNS和eNUM需要定哪些资源记录?
  • 原文地址:https://blog.csdn.net/2301_77479435/article/details/133924148