真正的c语言版本的有序顺序表的合并

顺序表合并算法 问题描述:有两个顺序表LA和LB,其元素均为递增有序排列,编写算法,将两个有序列表合并成一个有序的顺序表LC。 思路:先将两个表作比较,输出数字较小的一方,当有一个表已经全部输出后,将另外一个表的剩下的值原封不动的赋给LC C语言代码段: //=============================================================== //Summary: // ... 阅读详情

这是我的第二篇博客,数据结构中的链表快要学习完了,今天的博客是将两个非递减的有序顺序表进行合并。
这个代码是完全用c写出来的,这个程序让我想get到,结构体用malloc()函数分配的内存指针,并不是结构体成员中的数组的初始地址,这一点很重要,我在学习数据结构的时候,老师用的分配内存的指针,但我测试以后发现,编译器会报错,于是我新建了一个指向ElemType类型的指针,用以将结构体指针->数组名(就是一个地址)赋值给该指向ElemType类型的指针,这下终于成功了。
总体思路是依次比较两个表中的元素,将较小的数给c表中,哪个表把值赋出去,哪个表就往后读取,以下就是代码实现:

#include<stdio.h>
#include<stdlib.h> 
#define MAXSIZE 100

typedef struct extrior {
	int arr[MAXSIZE];
	int length;
} * sqlist;            //sqlist 类型的指针 

sqlist LA,LB,LC;       //malloc()分配指针 
int i;                //循环计数器 
int main()
{
	int * a,* b,* LA_LAST,* LB_LAST;
	LA = (sqlist)malloc(sizeof(struct extrior));
	printf("请输入表A的长度:");
	scanf("%d",&LA->length);
	printf("\n");
	printf("输入表A的元素:") ; 
	for (i = 0;i<LA->length;i++){
	
		scanf("%d",&LA->arr[i]);
	} 
	printf("\n") ;
	a = LA->arr;
	LA_LAST = a + LA->length -1;
	
	LB = (sqlist)malloc(sizeof(struct extrior));
	printf("请输入表B的长度:");
	scanf("%d",&LB->length);
	printf("\n");
	printf("输入表B的元素:") ;
	for (i = 0;i<LB->length;i++){ 
		scanf("%d",&LB->arr[i]);
	} 
	printf("\n") ;
	b = LB->arr;
	LB_LAST = b + LB->length -1;
	
	int * c;
	LC = (sqlist)malloc(sizeof(struct extrior)); 
	LC->length= LA->length+LB->length;
	c = LC->arr;
	
	
	
	while(a<=LA_LAST && b<=LB_LAST){      /
		if (*a <= *b){
			*c = *a;
			c++; a++;
		}
		                                     
		else{
			*c = *b;
			c++; b++;                       /*核心算法区域*/ 
		}
	}
		
	while (a<=LA_LAST){
		*c = *a;
		c++; a++;
		}
		
	while (b<=LB_LAST){
		*c = *b;
		c++; b++;
		}
	
	
	printf("合并后的列表为:"); 
	for (i = 0;i<LC->length;i++){
		printf("%d ",LC->arr[i]);
	}
} 

在这里插入图片描述

C语言实现两个有序表的合并 /*有序表的合并*/ #include<stdio.h> #include<stdlib.h> typedef struct Lnode{ int data; struct Lnode *next; }Lnode,*LinkList; void crea(LinkList *L,int n) { LinkList p,q; int i; *L=(LinkL... 阅读详情

相关推荐

两个有序表的合并(三种方法)

设有两个递增排列的有序表,要求合并后仍按递增(非递减)有序排列

AIGC 1万+

合并两个有序表(C语言)

合并两个有序表描述格式样例题解及详细注释 描述 已知两个严格单调递增的表a(长度为n,n≤10000)和表b(长度为m,m≤10000),其中数据均为正整数,将其合并成一个严格单调递增的表c。 格式 输入格式 输入为3行,第一行两个数n和m,表示序列的长度。第二行是一个长度为n的表a,第三行是长度为m的表b。 输出格式 输出合并后的表c 样例 输入样例 5 6 2 4 7 9 12 3 4 8 9 12 15 输出样例 2 3 4 7 8 9 12 15 题解及详细注释 #include <stdio

m0_51456787的博客 4788

c语言数据结构顺序表合并

1.建立两个顺序表(通过随机函数生成); 2.排序(升序),输出合并前的结果; 3.对这两个顺序表进行合并(保持升序); 4.输出合并结果

两个有序链表的合并(超详细)

首先我们创建两个链表,那么该如何将两个链表合并尼,只需要创建两个指针,指向两个链表,然后比较两个链表中第一位的大小,让小的做第一位,然后while循坏就行,先看代码。不知道大家有没有做过一道经典的题目,两个长度为15的有序链表的合并,大家先看题目。当然还有个简单方法,不需要链表,你就相当于输入30个数排序,且看下面的代码。以上就是今天我分享的内容,那么我问大家,两个无序链表的合并该怎么做?那么这道题该如何做尼,首先我们用比较笨的办法,用链表做。

m0_74120645的博客 2983

【RK3588开发记录】超详细的RK3588修改debug串口波特率为115200

修改RK3588的debug串口为115200

Crazydrams的博客 4803

数据结构之栈(Stack)的实现详解

堆栈是一种线性数据结构,其插入新元素和删除现有元素都发生在堆栈的顶部。栈(Stack)按照"后进先出"(Last-In-First-Out,LIFO)的原则存储和访问数据。栈类似于现实生活中的堆叠物体,比如一摞书或者一堆盘子。

swadian2008的博客 3812

【数据结构】C语言实现顺序表(超级详细)

顺序表作为线性表的一种,它是用一段数据元素的线性结构,一般情况下采用。在数组上完成数据的增删查改。顺序表一般分为:1、静态顺序表——使用定长数组进行存储元素。这种存储方式在存储数据时比较有局限性,当数据存储量非常小的时候,数组长度太长,会造成空间的浪费;当数据存储量非常大的时候,数组空间可能会不够,但是这种存储方式不能进行扩容。所以在实现顺序表时,我们通常使用的是动态顺序表。这样能够提高我们的空间利用率。2、动态顺序表——使用动态开辟的数组进行存储元素。

m0_74459723的博客 1万+

Cortex-M TrustZone实战:从硬件隔离到安全交互的嵌入式开发指南

在嵌入式系统开发中,硬件安全隔离是构建可信执行环境(TEE)的核心技术。其原理是通过处理器硬件机制,将系统资源划分为安全与非安全域,实现内存、外设和代码的强制访问控制。这项技术的核心价值在于,它能在单一芯片上为资源受限的物联网(IoT)设备、智能传感器等提供芯片级的安全基础,无需依赖外置安全元件,从而降低BOM成本并简化设计。典型的应用场景包括保护设备密钥、实现安全启动、构建安全服务(如加密、密钥管理)以供应用程序调用。本文聚焦于Arm Cortex-M系列微控制器上的TrustZone技术实现,针对开发中

weixin_42639246的博客 298

【数据结构】C语言实现有序表合并

C语言实现有序表合并有序顺序表合并有序单链表合并 有序顺序表合并 有序,指的是线性表元素成非递减或非递增有序排列。非,表示允许可以存在前后两数据值相等。 C语言代码示例: #include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 typedef int Status; typedef struct SqList { int *elem; int lenght; }SqList; //初始化顺序

weixin_43716338的博客 4989

全志T133-s3(Tina Linux)下RTL8723DS WiFi驱动移植与调试实战

本文详细介绍了在全志T133-s3平台(Tina Linux)上移植RTL8723DS WiFi驱动的完整流程,包括硬件连接、驱动源码获取、内核配置、系统适配、设备树配置以及常见问题排查。通过实战案例,帮助开发者快速解决SDIO接口通信、固件加载、电源管理等关键问题,实现稳定的WiFi功能。

weixin_30505225的博客 506

保姆级教程:用OpenCV的calibrateHandEye()搞定机器人手眼标定(附Python代码)

本文详细介绍了如何使用OpenCV的calibrateHandEye()函数完成机器人手眼标定,解决机械臂与相机坐标系对齐问题。教程涵盖从基础原理、数据采集到Python代码实现的完整流程,特别适合需要精确视觉引导的机器人应用开发。通过手眼标定,可确保机械臂准确抓取相机检测到的目标物体。

weixin_33712987的博客 515

C语言-有序表的合并

上代码: #include "stdio.h" #define MAXSIZE 100 typedef int ElemType; /*顺序表中存放整型元素*/ typedef struct{ ElemType elem[MAXSIZE]; //ElemType目前为整型;其可以为任意类型 int last; //最后一个元素在数组中的下标 }SeqList; /*函数声明*/ void initList(SeqList *L); void printList(Se

1483

AI视频生成模型训练:从数据准备到部署全流程

咱们这次的目的就像是要建造一座超级厉害的AI视频生成魔法城堡。范围呢,就是从收集建造城堡的材料(数据准备)开始,到把城堡搭建起来(模型训练),再到让城堡能供大家使用(模型部署),涵盖了整个过程的方方面面。接下来我们会先给大家介绍一些重要的术语,就像认识冒险途中的关键道具一样。然后引入一个有趣的故事,带大家进入AI视频生成的奇妙世界,解释核心概念以及它们之间的关系。接着会详细讲解核心算法原理、数学模型和公式,还会有项目实战,带大家亲自体验代码的魅力。

小白菜的博客 399

Chap2-3,顺序表的应用_合并有序顺序表;《数据结构》-C语言版本源码实现,严蔚敏版

0·说明 本文实现的方法比较简单,只是起到了对之前书序表相关函数的使用的作用,没有使用到复杂的指针。本文仅作为参考,如果您比较感兴趣,可自行撰写函数。此外需要说明的是,如果是无序的两个顺序表合并,可先写一个排序函数,加在主函数初始化时,这样本节的算法就能够继续使用。 1.main.c //*********************************************** //求...

鬼爷杂货铺 540

使用lighttpd和开发板进行交互

本文介绍了如何在嵌入式开发板上使用Lighttpd Web服务器实现硬件交互功能。主要内容包括:Lighttpd通过CGI程序间接控制硬件的基本原理;lighttpd.conf配置文件的详细解析;开发板文件目录结构设计;用C语言编写控制GPIO的CGI程序示例;网页调用CGI实现按钮触发控制的HTML代码;常见问题调试建议。最后通过效果图展示了网页按钮点击后成功控制LED灯的实际效果,验证了Lighttpd+CGI方案在嵌入式设备Web控制中的可行性。

m0_49476241的博客 1423

AgentScope深入分析-ReActAgent

ReActAgent 是 AgentScope 框架中最核心的智能体实现,它完美诠释了"推理-行动"(Reasoning-Acting)循环的精髓。本文将深入分析 ReActAgent 的类继承关系、核心执行流程,以及状态管理、钩子机制、实时介入等关键技术点。通过阅读本文,你会理解智能体如何与模型交互、如何执行工具、如何处理中断,以及这些机制背后的设计考量。模块化:通过组合不同的组件(模型、格式化器、工具集、记忆)来构建智能体透明性:所有关键流程都对开发者可见,可以精确控制可扩展性。

842

数据结构——两个有序顺序表的合并(C语言)

-将两个非递减有序顺序表A和B合并成一个新的非递减有序表C #include<stdio.h> #include<stdlib.h> #define MAXSIZE 10010 #define ElemType int typedef struct{ ElemType data[MAXSIZE]; int length; }SeqList; void InitList(SeqList &l){ l.length=0; } void CreateList

weixin_42468092的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

将两个有序顺序表合并为一个新的有序顺序表MergeList_Sq

将两个有序顺序表合并为一个新的有序顺序表,输出合并后的顺序表的所有数据元素; #include<stdio.h> #include<stdlib.h> #define LIST_INIT_SIZE 100 #define LISTINCREMENT 20 typedef struct { int *elem; int length; int listsize; }SqList; bool InitList_Sq(SqList &L); void PrintElem_

z_x_y_zxy的博客 5238

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

将两个顺序表合并为一个新的顺序表

问题描述:将两个有序顺序表合并为一个新的有序顺序表,并有函数返回结果顺序表。要求时间复杂度O(n) 算法设计思想:首先,按顺序取两个顺序表表头较小的结点存入新的线性表中直到某一个表遍历完;然后将还有剩余元素的表的剩下结点加到新的顺序表后。 代码及结果: #include<stdio.h> #include "线性表的顺序表示和实现.cpp" bool Merge(SqList &A,SqList &B,SqList &L){ //将有序顺序表A和B合.

Dear_Jia的博客 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

c语言将两个递增的顺序表合并为一个递减的顺序表

eg:顺序表A:1 3 5 7 顺序表B:2 4 6 8 合并后的表C:8 7 6 5 4 3 2 1 **思路:**从后往前遍历顺序表A和B,如果当前A表的数大于等于B表的数,则将A表的数存入C,A的元素下标往前移一位,否则,将B表的数存入C表,B的元素下标往前移一位B;最后再把其中一个未遍历完的表存入C表。 #include <stdio.h> #include <mallo...

dream_it_的博客 5514

有两个顺序表LA和LB,其元素,其元素均为非递减有序排列,编写一个算法,将它们合并成一个顺序表LC,要求LC也是非递减有序排序。

有两个顺序表LA和LB,其元素,其元素均为非递减有序排列,编写一个算法,将它们合并成一个顺序表LC,要求LC也是非递减有序排序。 C语言版 解法一: #include <stdio.h> typedef struct { int *elem; int len } SqList; void MergeList(SqList *LA, SqList *LB, SqList *LC) { int i, j, n; for (i = LA->len - 1, j

qq_45917176的博客 8889

【数据结构-C语言】分别创建两个有序的顺序表(每个表的元素个数及每个元素的值在运行时由键盘输入),现将两个有序表合并,并保证新表依然为有序的顺序表。

#include<stdio.h> #include<malloc.h> #include<stdlib.h> struct node{ int *elem; int len; }; void Creatarr(int len,struct node &arr) {int i=0,j=0,k=0; int t; arr.elem=(int *)m...

桺柒郞的小小屋 7723

数据结构(C语言版)——顺序表的基本操作(包含顺序表的合并操作)

线性表——顺序表结构体定义初始化插入删除判空求长度获取内容遍历检索清空销毁顺序表的直接合并顺序表的非递减有序排列合并源代码及数据测试测试结果 结构体定义 #define LIST_INIT_SIZE 10 //线性表存储空间的初始分配量 #define LISTINCRENMENT 2 //线性表存储空间的分配增量 //定义一个结构体 typedef struct { ElemType *elem; //存储空间的基地址 int length; //当前的长度 int

隔壁家的程序员小白 3351

c语言,c++顺序表操作(创建、插入、查找、显示、删除、有序合并、排序)

C++链表 **这次链表操作包括 “链表初始化” “链表创建“ ”链表插入“ ”链表查找“ ”链表显示“ ”链表删除“ ”链表有序合并“;链表是c++的一个难点,这次我为大家献上了我的教程。 这也是我的第一篇博客因为本人也是一位大学生,学习时间紧所以不经常发博客,此次老师留作业要做链表操作,本来链表也是难点同学们也需要理解,这次共享望大家支持点赞。 下面是整体的代码 #include...

Systemas的博客 3830

将两个有序顺序表A和B合并成为一个新的有序顺序表C(C语言版)

算法设计 (1)设置有序顺序表C的表长,即C.listsize = C.lenghth = A.length+B.length。 (2)设置A.elem、B.elem、C.elem的下标分别为i,j,k,且初值均为0; (3)当 i ≤ A.length 且 j ≤ B.length 时,进行A和B的合并。如果A.elem[i] ≤ B.elem[j] ,则令C.elem[k] = A.elem[i],并令 i 和 k加1;如果A.elem[i] > B.elem[j] ,则令C.elem[k] ..

qq_43708690的博客 6364
上一篇: 顺序表创建、查找、插入、删除操作集(c语言实现)
下一篇: 用python实现日期处理
mAN_DOm
博客等级 码龄8年 13粉丝 16原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值