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

数据结构-单链表

题目描述

输入n个整数,逐个读入建立一个单链表,然后将该单链表拆分成两个子链表,第一个子链表存放所有的偶数,第二个子链表存放所有的奇数,两个子链表中数据的相对次序与原链表一致。

测试

测试用例1

输入:

输入分为两行:

第1行输入整数的个数n;

第2行依次输入n个整数,每个整数之间以空格分割。

如:

11

10 3 25 8 15 39 9 70 6 100 67

输出:

输出分为3行:

1行为偶数和奇数数据元素的个数;

2行依次输出偶数子链表的所有数据,没有偶数,输出一个换行;

3行依次输出奇数子链表的所有数据,没有奇数,输出一个换行。

如:

5 6

10 8 70 6 100

3 25 15 39 9 67

程序实现(C++):

#include <bits/stdc++.h>using namespace std;// 定义单链表结点
struct Node {int data;Node* next;Node(int val) : data(val), next(nullptr) {}
};// 创建单链表,链表带有头结点,n 为输入元素个数,返回链表头指针
Node* create(int n) {Node* head = new Node(0);for (int i = 0; i < n; ++i) {int val;cin >> val;Node* newNode = new Node(val);newNode->next = head->next;head->next = newNode;}return head;
}// 拆分链表,将单链表拆分成两个链表,第一个链表(head1)使用原链表表头,存放所有的偶数元素,第二个子链表(head2,带头结点)存放所有的奇数元素,两个子链表中数据的相对次序与原链表一致。
Node* split(Node* head1) {int evenCount = 0;int oddCount = 0;Node* head2 = new Node(0);Node* p = head1->next;head1->next = nullptr;Node* q;while (p) {q = p->next;if (p->data % 2 == 0) {// 偶数元素,插入 head1 链表头部,元素再次逆序p->next = head1->next;head1->next = p;evenCount++;} else {// 奇数元素,插入 head2 链表头部,元素再次逆序p->next = head2->next;head2->next = p;oddCount++;}p = q;}cout << evenCount << " " << oddCount << endl;return head2;
}// 顺序输出带头结点的单链表中各数据元素
void show(Node* head) {Node* p = head->next;while (p) {cout << p->data;if (p->next) {cout << " ";}p = p->next;}cout << endl;
}int main() {int n;cin >> n;Node* head1 = create(n);Node* head2 = split(head1);show(head1);show(head2);return 0;
}


http://www.mrgr.cn/news/38875.html

相关文章:

  • 【流计算】流计算概论
  • 聊一聊检查代码接口中的错误有哪些
  • 常用激活函数总结
  • javaScript中的浅拷贝和深拷贝详解
  • C++17之void_t元函数
  • 【CSS in Depth 2 精译_042】6.4 CSS 中的堆叠上下文与 z-index(下)——深入理解堆叠上下文
  • ubuntu命令行连接wifi
  • js中的事件冒泡是什么?
  • Linux网络基础:HTTPS 网络传输协议
  • 结合创新!小波变换+注意力机制,实现100%分类准确率
  • 基于趋近律的滑模控制器设计、仿真(S-function)
  • 从0学习React(5)---通过例子体会setState
  • js中数组操作filter()、some()、every()等函数
  • Macbook 打开txt文件乱码问题解决
  • 判断JDK是否包含某个class
  • 阿里算法岗面试,一上来就手撕代码。。。
  • JD面试题
  • Spring Mvc 基础源码分析
  • LOESS(Locally Estimated Scatterplot Smoothing)
  • Java8后新特性介绍