#include <stdio.h>
#include <malloc.h>
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next; //指向后继结点
} LinkNode; //声明单链表结点类型
void CreateListF(LinkNode *&L,ElemType a[],int n)
//头插法建立单链表
{
LinkNode *s;
L=(LinkNode *)malloc(sizeof(LinkNode)); //创建头结点
L->next=NULL;
for (int i=0;i<n;i++)
{
s=(LinkNode *)malloc(sizeof(LinkNode));//创建新结点s
s->data=a[i];
s->next=L->next; //将结点s插在原开始结点之前,头结点之后
L->next=s;
}
}
void DispList(LinkNode *L)
{
LinkNode *p=L->next;
while (p!=NULL)
{ printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
void DestroyList(LinkNode *&L)
{
LinkNode *pre=L,*p=pre->next;
while (p!=NULL)
{ free(pre);
pre=p;
p=pre->next;
}
free(pre); //此时p为NULL,pre指向尾结点,释放它
}
void sort(LinkNode *&L)
{ LinkNode *p,*pre,*q;
p=L->next->next; //p指向L的第2个数据结点
L->next->next=NULL; //构造只含一个数据结点的有序表
while (p!=NULL)
{
q=p->next; //q相当于循环语句中循环变量,循环一次指针往后移一次,有序表在增加
pre=L; //循环中pre=L,相当于每次排好一个数,pre指针要归位
while (pre->next!=NULL && pre->next->data<p->data)
pre=pre->next; //在有序表中找插入p结点的前驱结点pre
p->next=pre->next; //在pre结点之后插入p结点
pre->next=p;
p=q; //相当于p=p->next,继续寻找下一个结点
}
}
int main()
{
LinkNode *L;
int n=10;
ElemType a[]={1,3,2,9,0,4,7,6,5,8};
CreateListF(L,a,n);
printf("L:");DispList(L);
printf("排序\n");
sort(L);
printf("L:");DispList(L);
DestroyList(L);
return 1;
}
相关推荐
链表归并排序实现详解
本文实现了一个将两个递增有序单链表ha和hb归并的程序,保持归并后ha仍有序且不破坏hb链表。算法采用双指针遍历两链表,通过比较节点值分三种情况处理:ha节点值小时后移指针;hb节点值小时复制节点插入ha;两节点值相等时跳过(实现去重)。程序包含链表创建、归并和输出功能,使用临时头节点简化边界处理,时间复杂度O(m+n),空间复杂度O(n)。关键点包括三路比较逻辑、剩余节点处理和内存管理,适用于无头结点的单链表归并场景。
单链表元素递增有序
题目: 给定一个带头结点的无序单链表L,使其元素递增有序 思路: 采用直接插入算法的思想,先构造只有一个数据结点的有序单链表,然后依次扫描单链表剩下的结点。 代码实现: #include <bits/stdc++.h> #define OK 1 #define OVERFLOW -1 using namespace std; typedef int ElemType; typedef int Status; typedef struct LNode {
ICNN实现入侵检测的思路与源码(CIC-IDS-2017)
基于ICNN实现入侵检测,可用于现实网络
单链表增序排列节点
我们既然想把节点排序 , 那就要先有一个初始节点, 然后把新节点来与初始节点比较, 如果比初始节点大,就插入到初始节点的后面,如果比初始节点小 , 那就插入到节点的前面 ,这样就把新元素插入到了, pre的后面, 但是后面的元素pre->next存储的是后面的元素,全被覆盖了, 相当于 比新元素大的元素,以后都断掉了,指针失踪了。我们如果直接覆盖掉 新节点的后继指针 p->next 的话 ,就会让下一个要操作的新节点q ,失去联系 ,那我们就失去了链表联系 ,那如何再接着构建链表呢?
HAMi 核心模块与架构设计
HAMi 的架构设计是围绕 Kubernetes 生态系统构建的,通过扩展 Kubernetes 的调度能力和设备管理能力,为用户提供了高效、灵活的异构设备虚拟化和管理解决方案。
Visio 2013安装遇阻?手把手教你搞定注册表权限错误1402(附64位系统特殊处理)
本文详细解析了Visio 2013安装过程中常见的注册表权限错误1402问题,特别是在64位系统下的特殊处理方法。通过分步指导如何修改注册表权限、处理Wow6432Node分支以及使用高级工具如subinacl,帮助用户顺利完成安装并避免常见连带问题。
【数据结构】对单链表进行简单选择排序,使结点元素递增
文章目录1.算法思想2.定义结构体3.函数实现4.测试用例5.完整代码 1.算法思想 循环创建单链表 使用简单选择排序找到当前最小的结点的值 交换最小值与当前值 重复2,3两步,直到排序完成 2.定义结构体 只使用到单链表的数据结构: data: 存放数据元素 next: 用于指向下一个结点的指针 typedef struct LNode { int data; struct LNode *next; } LNode, *LinkList; 3.函数实现 工作指针: min: 指
保姆级教程:在RK3588开发板上编译带MPP硬件加速的FFmpeg(含完整依赖库配置)
本文提供在RK3588开发板上编译支持MPP硬件加速的FFmpeg的详细教程,涵盖交叉编译环境搭建、MPP框架及依赖库配置,最终实现4K视频硬件编解码性能优化。通过实战步骤和性能对比,展示如何充分发挥RK3588的硬件加速能力。
一种单链表递增排序算法(C语言)
LinkList BiggerSort(LinkList &L) { LNode* pre=L,*k=L,*minpre=L,*q; while(pre->next->next) { while(pre->next) { if(pre->next->data<minpre->next->data)minpre=pre; pre=pre->next; } q=minpre->next; minpre-&g
一文读懂 STAR-CCM+:多物理场仿真王者,从入门到精通全攻略(附实战路线)
STAR-CCM+是西门子旗下的多物理场仿真平台,集流体、传热、结构、电磁等耦合求解于一体。其核心优势包括:全自动网格处理技术(支持十亿级网格)、多物理场无缝耦合、CPU/GPU并行加速计算、流程自动化与设计探索等。广泛应用于汽车(空气动力学优化、电池热管理)、航空航天(气动设计、发动机仿真)、能源(风电叶片流固耦合)、电子(芯片散热)等行业。相比ANSYS Fluent和OpenFOAM,STAR-CCM+在多物理场耦合和复杂几何处理方面更具优势,适合工业级高精度仿真需求。学习路径建议从基础操作入手,逐步
Python电梯II
输入数据有若干组(最多不超过1000组),每组数据的第一行为四个如题目中所示的整数N,u,d,s,由空格分隔开。第二行为不同楼层需要上下楼的请求, 最多不超过1000个。每个请求的格式为"from-to",其中"from"和"to"为所在楼层和要到达的楼层,保证from!=to。
线性表练习之Example045-有一个带头结点的单链表 L,设计一个算法使其元素递增有序
有一个带头结点的单链表 L,设计一个算法使其元素递增有序。
C语言从句柄到对象 (一) —— 全局变量的噩梦与“多实例”的救赎
本文探讨了嵌入式开发中句柄(Handle)的概念与应用。通过电机控制案例,分析了传统单例模式在扩展性上的局限,并展示了如何通过句柄实现代码复用:将电机状态封装为结构体,通过指针(句柄)传递实例数据,使同一套逻辑可操作多个实例。文章比较了单例模式与句柄模式的适用场景,建议底层驱动库默认采用句柄模式以提高扩展性。最后指出当前实现仍存在数据暴露风险,预告下期将介绍不透明指针技术实现更安全的封装。全文揭示了句柄作为C语言实现模块化和面向对象设计的关键作用。
单链表实现递增排序2021-04-07
#include<iostream> #include<malloc.h> # define size 50 using namespace std; typedef struct link { int data; link *next; }linklist; void creat(linklist *&p) { p=(linklist *)malloc(sizeof(linklist)); p->next=NULL; } void store(linklist
DeepSeek 赋能智慧消防:以 AI 之力筑牢城市安全 “防火墙”
在数字化浪潮下,智慧消防系统亟需先进技术提升效能。DeepSeek 凭借 Transformer 架构与混合专家架构等核心技术,具备强大的多模态数据处理与智能决策能力,且支持本地化部署,保障数据安全。其在智慧消防领域的应用成效显著,从实现火灾风险动态感知与早期精准预警,到优化智能接警调度、设备健康管理,再到辅助应急指挥与疏散,有效降低火灾风险与事故损失。未来,DeepSeek 有望在智慧消防领域持续拓展,同时也需应对技术、数据等多方面挑战。
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
设计一个算法使元素递增有序
考研例题:有一个带头结点的单链表L,设计一个算法使元素递增有序 思想:采用直接插入排序的思想,先构成只含有一个数据结点的有序单链表,然后依次扫描单链表中的剩下结点p(直至p==NULL)为止,在有序表通过比较查找插入p的前驱结点pre,然后将p插入到*pre之后。 本题代码: void Sort(LinkList &L) { LNode *p=L->next,*pre...
锂电池充电器电路设计 里面有电路
锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。
【数据结构】单链表—排序
使单链表递增有序 代码如下 #include<stdio.h> #include<stdlib.h> struct Lnode { int data; Lnode *next; }; int Init(struct Lnode *L, int i) { struct Lnode *p; struct Lnode *q=L; int j...
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
算法之线性表1.1.1.(9)链表递增有序
有一个带头结点的单链表L,设计一个算法使其元素递增有序。
单链表--排序
有一个带头节点的单链表L(至少有一个数据节点),设计一个算法使其元素递增有序排列。 #include<stdio.h> #include<stdlib.h> typedef struct LNode { int data; struct LNode *next; }LinkNode; //单链表节点类型 void CreatList(LinkNode *&am...
用三种排序算法(主元,插入,冒泡)对链表排序
【代码】用三种排序算法(主元,插入,冒泡)对链表排序。
【菜鸟求教】单链表递增排序,程序输出出现-842150451
【菜鸟求教】单链表递增排序,程序输出出现-842150451 #include "stdafx.h" #include "malloc.h" #include "stdio.h" typedef int ElemType; typedef struct Lcode { ElemType data; struct Lcode*next; }LinkList; void InitList(Li...
单链表实现简单选择排序
递增有序每次从原链表中找出一个最大(最小)元素,然后头插(尾插)到结果链表中。递减有序每次从原链表中找出一个最小(最大)元素,然后头插(尾插)到结果链表中。
编程菜鸟的日记-初学尝试编程-单链表
//单链表的头插法和尾插法建立,以及直接插入法递增排序 #include <iostream> #include <string> #include <stdlib.h> #define ElemType int using namespace std; typedef struct List { ElemType data; ...
非递减单链表中的删除操作(删除所有值为x的结点)—— c语言实现
/*************************** * author:vivi * date: 20-07-14 ****************************/ #include <stdio.h> #include <stdlib.h> // function:单链表递增直接插入排序 typedef struct Node { int data; struct Node* next; }Node,* SList; void init_list(SL
链表-使元素递增有序
/*有一个带头结点的单链表L,设计一个算法使其元素递增有序*/ #include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList; LinkList TailCreateList(LinkList &L) { L = (LinkList)malloc(sizeof(L.
王道数据结构第41页第九题
题目要求: 代码实现: #include<stdio.h> #include<stdlib.h> #define ElemType int typedef struct LNode{ ElemType data; struct LNode* next; }LNode,*LinkList; //头插法构造单链表 LinkList List_HeadInsert(LinkList &L) { LNode *s; int x; L=(LinkList)malloc
1263



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



