数据结构-单链表

server/2024/10/9 9:15:46/

题目描述

输入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.ppmy.cn/server/126377.html

相关文章

源2.0全面适配百度PaddleNLP,大模型开发开箱即用

近日&#xff0c;源2.0开源大模型与百度PaddleNLP完成全面适配。用户通过PaddleNLP&#xff0c;可快速调用源2.0预训练大模型&#xff0c;使用源2.0在语义、数学、推理、代码、知识等方面的推理能力&#xff0c;也可以使用特定领域的数据集对源2.0 进行微调&#xff0c;训练出适…

linux文件编程_进程

1. 进程相关概念 面试中关于进程&#xff0c;应该会问的的几个问题&#xff1a; 1.1. 什么是程序&#xff0c;什么是进程&#xff0c;有什么区别&#xff1f; 程序是静态的概念&#xff0c;比如&#xff1a; 磁盘中生成的a.out文件&#xff0c;就叫做&#xff1a;程序进程是…

消息中间件 Kafka 快速入门与实战

1、概述 最近感觉上班实在是太无聊&#xff0c;打算给大家分享一下Kafka的使用&#xff0c;本篇文章首先给大家分享三种方式搭建Kafka环境&#xff0c;接着给大家介绍kafka核心的基础概念以及Java API的使用&#xff0c;最后分享一个SpringBoot的集成案例&#xff0c;希望对大…

基于springboot+vue的社区流浪动物救助系统

摘要 本文介绍了一个基于Spring Boot和Vue.js技术的社区流浪动物救助系统。该系统采用前后端分离架构&#xff0c;后端使用Spring Boot框架进行开发&#xff0c;负责业务逻辑的处理和数据的交互&#xff1b;前端则使用Vue.js框架&#xff0c;为用户提供友好的交互界面。系统实现…

简单的微信小程序个人 个人详情页

一、示例 1.个人页面 2.个人详情页面 二、示例代码 1.wxml页面 <!--pages/user/user.wxml--> <view class"mine-wrapper"><view class"avatar-wrapper"><view><view class"avatar"><image style"borde…

设计模式-生成器模式/建造者模式Builder

构建起模式&#xff1a;将一个复杂类的表示与其构造分离&#xff0c;使得相同的构建过程能够得出不同的表示。&#xff08;建造者其实和工厂模式差不多&#xff09; 详细的UML类图 图文说明&#xff1a;距离相同的构建过程 得出不同的展示。此时就用两个类&#xff08;文本生成…

【递归】12. leetcode 1448 统计二叉树中好节点的数目

1 题目描述 题目链接&#xff1a;统计二叉树中好节点的数目 2 解答思路 第一步&#xff1a;挖掘出相同的子问题 &#xff08;关系到具体函数头的设计&#xff09; 第二步&#xff1a;只关心具体子问题做了什么 &#xff08;关系到具体函数体怎么写&#xff0c;是一个宏观…

[网络]NAT、代理服务、内网穿透、内网打洞

目录 一、NAT 1.1 NAT 技术背景 1.2 NAT IP 转换过程 1.3 NAPT&#xff08;Network Address Port Translation&#xff09; 1.地址转换表 2. NAPT&#xff08;网络地址端口转换Network Address Port Translation&#xff09; 3. NAT技术的缺陷 二、代理服务器 2.1 正向…