当前位置: 首页 > news >正文

做响应式网站价格crm管理系统软件哪个好

做响应式网站价格,crm管理系统软件哪个好,网站数据库怎么建,哪个网站做h5比较好目录 题目要求 手搓简易单链表 代码实现 题目要求 现有一链表的头指针 ListNode* head ,给一定值 x ,编写一段代码将所有小于 x 的节点排在其余节点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头节点 举例说明&a…

目录

题目要求

手搓简易单链表

代码实现 


题目要求

现有一链表的头指针 ListNode* head ,给一定值 x ,编写一段代码将所有小于 x 的节点排在其余节点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头节点

举例说明:

输入:x = 5 ; [1,3,9,6,5,4,7,2]

输出:[1,3,4,2,9,6,5,7]


手搓简易单链表

代码演示:

struct ListNode* n1 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(n1);
struct ListNode* n2 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(n2);
struct ListNode* n3 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(n3);
struct ListNode* n4 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(n4);
struct ListNode* n5 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(n5);
struct ListNode* n6 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(n6);
struct ListNode* n7 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(n7);
struct ListNode* n8 = (struct ListNode*)malloc(sizeof(struct ListNode));
assert(n8);n1->val = 1;
n2->val = 3;
n3->val = 9;
n4->val = 6;
n5->val = 5;
n6->val = 4;
n7->val = 7;
n8->val = 2;n1->next = n2;
n2->next = n3;
n3->next = n4;
n4->next = n5;
n5->next = n6;
n6->next = n7;
n7->next = n8;
n8->next = NULL;

代码实现

代码演示:

struct ListNode* partition(struct ListNode* head, int x)
{// 小于 x 的头尾节点struct ListNode* lesshead;struct ListNode* lesstail;// 大于等于 x 的头尾节点struct ListNode* greaterhead;struct ListNode* greatertail;// 定义哨兵位lesshead = lesstail = (struct ListNode*)malloc(sizeof(struct ListNode));greaterhead = greatertail = (struct ListNode*)malloc(sizeof(struct ListNode));struct ListNode* cur = head;while (cur != NULL){if (cur->val < x){lesstail->next = cur;lesstail = lesstail->next;}else{greatertail->next = cur;greatertail = greatertail->next;}cur = cur->next;}// 链接两个链表lesstail->next = greaterhead->next;greatertail->next = NULL;head = lesshead->next;free(lesshead);free(greaterhead);return head;
}

代码解析:

代码思路:创建两个带哨兵位的单链表,一个用来链接小于 x 的节点,一个用来链接大于等于 x 的节点,最后再把两个链表进行链接,这样就完成了链表的分割,并且没有改变原来的数据顺序

代码逻辑:lesshead 和 lesstail 用来管控小于 x 的节点,lesshead 是哨兵位,不存储有效数据,lesstail 向后链接小于 x 的节点,greaterhead 和 greatertail 作用同上,是用来链接大于等于 x 的节点,进行分割后,不要忘记将 greatertail 的 next 置空,因为分割后 greatertail 节点不一定是为节点,最后再将 lesshead 哨兵位的 next 赋值给 head ,再释放,即可

代码验证:

算法的时间和空间复杂度:

while 循环执行了 N 次,每次内部常数次,只 malloc 开辟了两个节点,可忽略不计

算法的时间复杂度:O(N)

算法的空间复杂度:O(1)

http://www.yayakq.cn/news/454250/

相关文章:

  • python做网站 不适合四川省建设领域信用系统网站
  • 如何做网站推广私人建设网站个类型好
  • 上海网站域名注册价格网站访问量查询
  • 虚拟主机可建站1个是不是只能放一个网站可以提升自己的网站
  • 佛山牛豹云网站开发福州建网站
  • 在线手机网站建设做直播网站有哪些
  • 网站购物系统制作雨辰资讯电子商务类网站开发韶关公司做网站
  • 徐州智能模板建站手机移动端网站建设宣传
  • 企业门户网站建设方案网站运营与管理规划书
  • 铁道部建设司网站动漫设计与制作工资多少
  • 中国制造网网站特色论述网站建设流程
  • 大连哪家做网站比较好网站备案没公司名称
  • 网站优化如何收费济源专业网站建设(制作网站)
  • 用jsp做的可运行的网站西部域名网
  • 温州哪里有网站c语言开发环境
  • 广州市住房和城乡建设局网站淘宝网页美工设计
  • 网站建设服务天软科技广州在线网站制作
  • 省建设厅网站安全生产标准化网络推广怎么收费
  • 济南做网站哪里好重庆 网站 备案 查询
  • python 自己做网站新城疫最快解决的办法
  • 泉州免费建站菏泽建设信息网官网
  • 网站建设流程简图个人如何制作网站源码
  • 广西住建局官方网站在线生成短链接
  • 购物网站线下推广方案wordpress 图片压缩
  • 做瞹瞹爱免费网站wordpress文章发布专题文章
  • 快速学会做网站聊城手机网站建设方案
  • 站长是什么职位wordpress嵌入代码
  • 佛山的网站建设公司100件机械创意产品设计
  • 江门英文网站建设海南做网站找谁
  • 网站做收付款接口卡片式 主题 wordpress