链表划分为左小、中相等、右大
来源:互联网 发布:ubuntu查看mysql路径 编辑:程序博客网 时间:2024/04/30 14:29
解题思路:将一个链表分成三个链表,最后重新连接三个链表(1)分成三个链表的过程是一致的:以左小链表为例 依次遍历原链表的每一个节点cur,当cur->data<pivot时,把cur取出,添加到左小链表末尾,直到遍历完整个原链表为止。(2)生成左小、中相等、右大链表后,怎么连接三个链表并返回头结点是难点! (因为不知道三个链表是否为空)
#include<iostream>using namespace std;typedef struct TNode{ int data; struct TNode* next;}TNode;TNode* createL(int n) //创建链表{ TNode* head = NULL; TNode* tial = NULL; for (int i = 0; i < n; i++) { TNode* node = new TNode; node->next = NULL; cout << "请输入"; cin >> node->data; if (head == NULL) { head = node; tial = head; } else { tial->next = node; tial = node; } } tial->next = NULL; return head;}void travel(TNode* head){ cout << "输出结果:" << endl; TNode* p = head; while (p != NULL) { cout << p->data << endl; p = p->next; }}TNode* listPartition(TNode* head, int pivot) //链表划分{ TNode* sh = NULL; TNode* st = NULL; TNode* eh = NULL; TNode* et = NULL; TNode* bh = NULL; TNode* bt = NULL; //依次遍历每一个元素 TNode* cur = head; TNode* s = NULL; //辅助变量,用于保存cur节点的下一个节点,防止断链 while (cur != NULL) { s = cur->next; cur->next = NULL;//将当前结点cur的指针域设为空,保证每个链表的新增节点为最后一个节点 if (cur->data < pivot) { if (sh == NULL) { sh = cur; st = cur; } else { st->next = cur; st = cur; } } else if (cur->data == pivot) { if (eh == NULL) { eh = cur; et = cur; } else { et->next = cur; et = cur; } } else if (cur->data > pivot) { if (bh == NULL) { bh = cur; bt = cur; } else { bt->next = cur; bt = cur; } } cur = s; } //难点:将三个不知道是否为空链表的链表进行链接成一条链表,返回最终的头结点//依次从左到右假设每个链表不为空时,尾节点指针域的指向 if (st != NULL) { st->next = (eh != NULL) ? eh : bh; } if (et != NULL) { et->next = bh; } return st != NULL ? sh : et != NULL ? eh : bh;}int main(){ TNode* head = NULL; head = createL(7); travel(head); head = listPartition(head, 3); travel(head); return 0;}
阅读全文
0 0
- 链表划分为左小、中相等、右大
- 导航,左,中,右,布局
- 链表问题---将单向链表按某值划分成左边小,中间相等,右边大的形式
- oracle中左关联,右关联区别
- Android Toolbar左、中、右对齐
- ORACLE中左连接与右连接
- Java中“>> 右移”;“<< 左移”无符号右移>>>;“
- 数组左部分为奇,右部分为偶
- 左.右连接相关 , 将table1中数据导入到table2中(表结构不相同)
- 数组名作为左值和右值的区别
- 边框阴影 分别为左 右 下 上
- CSS布局中左(右)宽度自适应,右(左)宽度固定
- Java中左(右)移和左(右)循环
- 两表联接以及左、右联接
- 表的左连接与右连接
- oracle中emp表的内连接,左外连接,右外连接,全外连接
- oracle中emp表的内连接,左外连接,右外连接,全外连接
- oracle中emp表的内连接,左外连接,右外连接,全外连接
- Android开发:优化电池续航-监听电量和充电状态
- gerrit使用非默认私钥的配置方法
- Spring Cloud构建微服务架构:服务消费(基础)
- Spring-AOP @AspectJ进阶之绑定抛出的异常
- 看完这个,css中position的绝对定位相对定位就懂了
- 链表划分为左小、中相等、右大
- 笔记本
- Spring Cloud构建微服务架构:服务消费(Ribbon)
- POJ3281 Dining【网络流】
- 排序的写法
- Spring Cloud构建微服务架构:服务消费(Feign)
- redis持久化的几种方式
- 安卓一些错误经验积累
- Mybatis添加之后返回一个id