题目描述: 用随机函数生成10个3位整数(100~999),把这些整数存于单链表中,然后读入一个整数,以该值为基准把单链表分割为两部分,所有小于该值的结点排在大于或等于该值的结点之前。
题目分析: 这道题十分简单,实现的思路也非常简单
实现思路: 题目的意思其实是遍历一条链表,将链表分成以输入的median为标准的这种结构链表: 小于value的节点-> 大于value的节点。
这样的话、我们可以新定义两个头指针minlist和maxlist,分别连接小于median的节点和大于median的节点,然后遍历目的链表,将小于median的节点连接在minlist中,大于median的节点连接在maxlist后面,遍历完毕之后,将maxlist链表的头结点放在minlist链表的尾部,即可。
实现代码如下:
ListNode* ListNode::Min_Max(int median) {
//我们先创建好一个用于存储最小值的链表头指针
ListNode* minList = new ListNode(-1);
//存储最大值的链表头指针
ListNode* maxList = new ListNode(-1);
//然后对初始链表进行遍历,将每一个节点的值和median进行比较,小于median就插入到minList链表中,否则就插入到maxList链表后
ListNode* p = this->next;
while(p != NULL) {
ListNode *pNext = p->next;
if (p->value < median) {
//小于输入的整数
p->next = minList->next;
minList->next = p;
}

本文介绍了如何使用随机生成的10个3位整数构建单链表,并根据输入的基准值将其分割为两部分:小于基准值的节点和大于等于基准值的节点。通过新定义minlist和maxlist两个头指针,遍历链表,将节点分别插入相应链表,最后将maxlist连接到minlist尾部,完成链表的分割操作。
最低0.47元/天 解锁文章
516

被折叠的 条评论
为什么被折叠?



