单链表的创建及排序

分数 5

作者 李卫明

单位 杭州电子科技大学

1.1编写程序,建立2个带头结点单链表,输入若干整数将正整数插入第1个单链表,将负整数插入第2个单链表,插入前和插入后单链表保持递增或相等次序,显示2个单链表,最后销毁。程序不可存在内存泄漏。

输入格式:

若干整数。

输出格式:

每行显示一个链表,元素间用分隔符->分隔;共两行

输入样例:

100 2 3 -2 -8 -6 -9 -10 50 2 -1

输出样例:

2->2->3->50->100
-10->-9->-8->-6->-2->-1

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

C程序如下:

#include<stdio.h>    
#include<stdlib.h>    // 定义链表结构体  
typedef struct LinkList {    int Data;              // 节点数据  struct LinkList *Next; // 指向下一个节点的指针  
} LinkList, *List;    // 创建头节点的函数原型  
List  CreatHead();  
// 显示链表的函数原型  
void Display(List L);  
// 销毁链表的函数原型  
List Destroy(List L);  
// 反转链表的函数原型(但此函数在代码中并未实现)  
void Reverse(List L);  int main() {  // 定义两个链表的头尾指针  List firstHead, firstTail, secondHead, secondTail;  // 创建两个链表的头节点  firstHead = CreatHead();  firstTail = firstHead;  // 初始时,头尾指针指向同一个头节点  secondHead = CreatHead();  secondTail = secondHead; // 同上  int v;  // 循环读取输入,直到文件结束  while (scanf("%d", &v) != EOF) {  if (v > 0) {  // 如果输入为正数,则添加到第一个链表  List L = CreatHead();  // 创建一个新的头节点(实际上应该只创建节点,而不是头节点)  L->Data = v;  firstTail->Next = L;   // 将新节点添加到第一个链表的尾部  firstTail = L;         // 更新第一个链表的尾指针  }  else {  // 如果输入为负数,则添加到第二个链表  List L = CreatHead();  // 同上,这里应该只创建节点  L->Data = v;  secondTail->Next = L;  // 将新节点添加到第二个链表的尾部  secondTail = L;        // 更新第二个链表的尾指针  }  }  Sort(firstHead);  Sort(secondHead);  // 显示两个链表  Display(firstHead);  Display(secondHead);  // 销毁两个链表  Destroy(firstHead);  Destroy(secondHead);  return 0; // 返回0表示程序正常结束  
}  // 创建头节点的函数实现  
List CreatHead() {    List p = (List)malloc(sizeof(LinkList));  // 分配内存给新节点  if (p == NULL) {    exit(EXIT_FAILURE); // 如果分配失败,则退出程序  }    p->Next = NULL;  // 初始化新节点的Next指针为NULL  return p;  // 返回新节点的指针  
}    // 显示链表的函数实现  
void Display(List L) {  List p = L->Next;  // 从头节点的下一个节点开始遍历链表  while (p) {    printf("%d", p->Data);  // 打印当前节点的数据  p = p->Next;           // 移动到下一个节点  if (p) printf("->");   // 如果下一个节点存在,则打印"->"  }    printf("\n");  // 打印换行符  
}  // 销毁链表的函数实现  
List Destroy(List L) {    List p = L;    while (p->Next) {  // 循环直到最后一个节点(不包括头节点)  List q = p->Next;  // 临时保存下一个节点的指针  p->Next = q->Next; // 将当前节点的Next指针指向下一个节点的下一个节点,跳过下一个节点  free(q);          // 释放被跳过的节点的内存  }    free(p); // 释放头节点的内存(虽然这在实际中可能不是必须的,因为头节点可能已经在其他地方被释放了)  return NULL; // 销毁函数应该返回NULL,而不是L = NULL(这是无效的,因为L是传入函数的值的一个拷贝)  
}    void Sort(List L) {List pStar, pcur,pMin;pStar = L->Next;int temp;for (;pStar != NULL;pStar = pStar->Next) {pMin = pStar;for (pcur = pMin->Next;pcur != NULL; pcur = pcur->Next) {if (pcur->Data < pMin->Data) {pMin = pcur;}}if (pStar != pMin) {temp = pMin->Data;pMin->Data = pStar->Data;pStar->Data = temp;}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/29342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用这个神级提示词插件,能让你的AI绘画工具Stable diffusion提示词直接写中文!

大家好&#xff0c;我是设计师阿威 最近&#xff0c;有同学在使用AI绘画工具 Stable Diffusion的时候和我说&#xff1a;老师&#xff0c;我英文不好&#xff0c;能不能直接让我写中文提示词啊&#xff1f;最好可以直接在SD的输入框就能直接写中文&#xff0c;不用切换网页或者…

Git--Part4--多人协作

theme: nico 在之前的Git博客中&#xff0c;已经把Git本地相关的操作以及远程操作的介绍完了。如下&#xff1a; Git–Part1–基础操作 - 掘金 (juejin.cn)Git–Part2–分支管理 - 掘金 (juejin.cn)Git–Part3–远程操作 & 配置 & 标签管理 - 掘金 (juejin.cn) 这篇文…

LVM逻辑卷 磁盘管理

传统分区使用固定大小分区&#xff0c;重新调整大小十分麻烦。 LVM可以弹性的管理逻辑卷的扩大缩小&#xff0c;可以随意将新的硬盘添加到LVM&#xff0c;直接扩展已经存在的逻辑卷。 示例场景&#xff1a;将两块硬盘合并成一个&#xff0c;并挂载到/data目录下。 常用命令&a…

vue大作业-端午节主题网站

vue大作业-端午节主题网站介绍 端午节&#xff0c;又称为龙舟节&#xff0c;是中国的传统节日之一&#xff0c;每年农历五月初五庆祝。这个节日不仅是纪念古代爱国诗人屈原的日子&#xff0c;也是家人团聚、共享美食的时刻。今天&#xff0c;我们非常高兴地分享一个以端午节为…

本地运行大语言模型(LLMs)

用例 像PrivateGPT、llama.cpp、Ollama、GPT4All、llamafile 等项目的流行度凸显了本地&#xff08;在您自己的设备上&#xff09;运行大型语言模型&#xff08;LLMs&#xff09;的需求。 这至少有两个重要的好处&#xff1a; 1.隐私&#xff1a;您的数据不会发送给第三方&a…

模拟 IQ 方法的知识

模拟 IQ 调制器&#xff08;用于发射器&#xff09;和 IQ 解调器&#xff08;用于接收器&#xff09;已经使用了数十年&#xff08;[1] 至 [3]&#xff09;。 近推出了新的A/D和D/A转换器&#xff0c;可以直接对1至4 GHz的IF进行采样&#xff1b;在第二、第三和第四奈奎斯特区…

1. zookeeper分布式协调者

zookeeper分布协调者 一、zookeeper介绍1、软件设计架构1.1 单体架构1.2 SOA架构/分布式1.3 微服务架构 二、zookeeper角色1、角色2、选举机制3、znode类型 三、zookeeper集群部署1、环境规划2、安装jdk3、安装配置zookeeper3.1 安装zookeeper3.2 编辑配置文件3.3 创建myid文件…

.NET C#基础:布尔表达式

介绍 本文讨论了 C# 编程中决策逻辑的基本方面&#xff0c;重点介绍了布尔表达式、运算符及其对处理客户数据和用户输入的 C# 应用程序开发人员的重要性。 学习目标&#xff1a; 使用运算符构造布尔表达式&#xff0c;以便进行比较和相等性测试。 采用内置的字符串类方法进行…

Navicat for MySQL 11软件下载及安装教程

软件简介&#xff1a; Navicat for SQL Server 是一套专为 SQL Server设计的全面的图形化数据库管理及开发工具&#xff0c;可进行创建、编辑和删除全部数据库对象&#xff0c;例如表、视图、函数、索引和触发器&#xff0c;或运行 SQL查询和脚本&#xff0c;查看或编辑 BLOBs…

彩色图像批处理实例

在数字图像处理过程中&#xff0c;经常需要对一批图像进行处理&#xff0c;下面以自然场景下花背景分割为例&#xff0c;给出其主要处理过程和处理结果。 处理的主要步骤&#xff1a;1. 六张彩色图像存放在flower文件夹中&#xff0c;图像文件名为1.jpg 2.jpg 3.jpg 4.jpg 5.j…

物联网技术-第4章物联网通信技术-4.1计算机网络

目录 1.1计算机网络拓扑与组成 &#xff08;1&#xff09;全连通式网络 &#xff08;2&#xff09;星型网 &#xff08;3&#xff09;环形网 &#xff08;4&#xff09;总线网 &#xff08;5&#xff09;不规则型网 1.2数据交换类型 &#xff08;1&#xff09;电路交换网 &…

supOS数据集成

为解决企业数据孤岛问题&#xff0c;supOS对外提供了天湖能力&#xff0c;APP应用集成到supOS后可以使用supOS的天湖&#xff0c;所有数据归集到天湖&#xff0c;利用supOS的ESB消息总线能力实现各个业务系统的服务注册&#xff0c;对外提供统一消息总线能力&#xff0c;从而解…

GD32调试篇:STLINK驱动下载安装

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 向上代码兼容GD32F450ZGT6中使用 后续项目主要在下面该专栏中发布&#xff1a; https://blog.csdn.net/qq_62316532/category_12608431.html?spm1001.2014.3001.5482 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转…

LabVIEW在SpaceX的应用

结合真实的资料介绍LabVIEW在SpaceX的应用&#xff0c;涵盖自动化测试系统、数据采集与监控、可视化与分析、模块化设计与扩展&#xff0c;以及效率与可靠性的提高。 ​ 自动化测试系统 LabVIEW在SpaceX的自动化测试系统中发挥了关键作用。自动化测试是确保SpaceX火箭及其子系…

Flutter项目,Xcode15, 编译正常,但archive报错

错误提示 PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks /Users/目录/Developer/Xcode/DerivedData/Runner-brgnkruocugbipaswyuwsjsnqkzm/Build/Intermediates.noindex/ArchiveIntermediates/Runner/IntermediateBuildFilesPath/Runner.build/Release-iphoneos/Runner…

android system UI 基础的基础

Android 系统中的 SystemUI 是一种特殊的应用程序,它负责管理和显示设备的用户界面组件,例如状态栏、导航栏和最近任务列表等。SystemUI 是在 Android 启动过程中由 Zygote 进程启动的。以下是 SystemUI 启动过程的详细步骤: SystemUI 启动过程 1.启动 init 进程: Android…

目标检测数据集 - 手机屏幕表面表面缺陷检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;手机屏幕表面缺陷检测数据集&#xff0c;真实采集高质量手机屏幕表面含缺陷图片数据&#xff0c;数据集含多款不同型号和品牌的手机屏幕表面图片数据&#xff0c;包括苹果手机屏、三星手机屏、华为手机屏等数据。数据标注标签包括 Bubble 气泡/水滴、Scr…

js数组的常用操作1

在 中&#xff0c;数组是一种常见的数据结构&#xff0c;用于存储多个值。数组的操作非常丰富&#xff0c;以下是一些常见的数组操作及其具体解释和示例代码。 1. 创建数组 使用数组字面量 let arr [1, 2, 3, 4];使用 Array 构造函数 let arr new Array(1, 2, 3, 4);2. 访…

MetaGPT: Merging Large Language Models Using Model Exclusive Task Arithmetic

论文主题理解 这篇论文的核心是关于如何有效地结合多个预训练的大型语言模型&#xff08;LLMs&#xff09;&#xff0c;以便它们能够在多个不同的任务上表现出色。这里的“任务”可以是翻译、文本摘要、问题回答等自然语言处理任务。作者们提出了一种新的方法&#xff0c;称为…

openGauss 6.0高可用测试,系统上线前很关键

作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复&#xff0c; 安装迁移&#xff0c;性能优化、故障…