堆中分配二维数组初始化排序

news2024/11/20 15:37:01

方法一:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int getmem(char *** parry,int *depth,int *len){

int mydepth = *depth;
int mylen = *len;
char ** myarry = (char **)malloc(mydepth*sizeof(char*));
for(int i=0;i<mydepth;i++) {
    myarry[i] = (char *)malloc(mylen*sizeof(char));
}
*parry = myarry;
return 0;

}

int sortArry(char ** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;
char temp[mylen];

for(int i = 0;i<mydepth;i++) {
    for(int j=i+1;j<mydepth;j++)
        if(strcmp(arry[i],arry[j])>0) {
            strcpy(temp,arry[i]);
            strcpy(arry[i],arry[j]);
            strcpy(arry[j],temp);
        }
}
return 0;

}

int sortArry1(char ** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;
char *temp;

for(int i = 0;i<mydepth;i++) {
    for(int j=i+1;j<mydepth;j++)
        if(strcmp(arry[i],arry[j])<0) {
            char * temp = arry[i];
            arry[i] = arry[j];
            arry[j] = temp;
        }
}
return 0;

}

int initArry(char ** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;

for(int i=0;i<mydepth;i++) {
    strcpy(arry[i],"aaaaaaaa");
}
strcpy(arry[1],"cccccccc");
strcpy(arry[3],"bbbbbbbb");

return 0;

}

int printArry(char ** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;
for(int i=0;i<mydepth;i++) {
printf(“%s\n”,arry[i]);
}
printf(“------------------------------\n”);
return 0;
}

int freeArry(char ** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;

if(arry != NULL) {    
    for(int i=0;i<mydepth;i++) {
        if(arry[i] !=NULL ) {
            free(arry[i]);
        }
    }
    free(arry);
}

return 0;

}

int freeArry1(char *** marry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;
char ** arry = *marry;
if(arry != NULL) {
for(int i=0;i<mydepth;i++) {
if(arry[i] !=NULL ) {
free(arry[i]);
}
}
free(arry);
}
marry = NULL;
return 0;
}

int freeArry2(char *** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;

if(arry != NULL) {    
    for(int i=0;i<mydepth;i++) {
        if((*arry)[i] !=NULL ) {
            free((*arry)[i]);
        }
    }
    free(*arry);
}
arry = NULL;
return 0;

}

int main(){

int depth = 5;
int len = 100;
char ** arry = NULL;
getmem(&arry,&depth,&len);
initArry(arry,&depth,&len);
printArry(arry,&depth,&len);

sortArry(arry,&depth,&len);
printArry(arry,&depth,&len);

sortArry1(arry,&depth,&len);
printArry(arry,&depth,&len);

//freeArry(arry,&depth,&len);
//freeArry1(&arry,&depth,&len);
freeArry2(&arry,&depth,&len);
return 0;

}
在这里插入图片描述
方法二:
多分配一个数组,把最后一个数组置为0,作为循环判断条件。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int getmem(char *** parry,int *depth,int *len){

int mydepth = *depth+1;
int mylen = *len;
char ** myarry = (char **)malloc(mydepth*sizeof(char*));
for(int i=0;i<mydepth;i++) {
    myarry[i] = (char *)malloc(mylen*sizeof(char));
}
*parry = myarry;
return 0;

}

int sortArry(char ** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;
char temp[mylen];

for(int i = 0;arry[i]!=0;i++) {
    for(int j=i+1;arry[j]!=0;j++)
        if(strcmp(arry[i],arry[j])>0) {
            strcpy(temp,arry[i]);
            strcpy(arry[i],arry[j]);
            strcpy(arry[j],temp);
        }
}
return 0;

}

int sortArry1(char ** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;
char *temp;

for(int i = 0;arry[i]!=0;i++) {
    for(int j=i+1;arry[j]!=0;j++)
        if(strcmp(arry[i],arry[j])<0) {
            char * temp = arry[i];
            arry[i] = arry[j];
            arry[j] = temp;
        }
}
return 0;

}

int initArry(char ** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;
int i=0;
for(i=0;i<mydepth;i++) {
strcpy(arry[i],“aaaaaaaa”);
}
strcpy(arry[1],“cccccccc”);
strcpy(arry[3],“bbbbbbbb”);
arry[i]=0;

return 0;

}

int printArry(char ** arry,int *depth,int *len){
int mydepth = *depth;
int mylen = *len;
for(int i=0;arry[i]!=0;i++) {
printf(“%s\n”,arry[i]);
}
printf(“------------------------------\n”);
return 0;
}

int freeArry(char ** arry,int *depth,int *len){
int mydepth = *depth+1;
int mylen = *len;

if(arry != NULL) {    
    for(int i=0;arry[i]!=0;i++) {
        if(arry[i] !=NULL ) {
            free(arry[i]);
            arry[i]=NULL;
        }
    }
    free(arry);
    arry=NULL;//把形参置空
}

return 0;

}

int freeArry1(char *** marry,int *depth,int *len){
int mydepth = *depth+1;
int mylen = *len;
char ** arry = *marry;
if(arry != NULL) {
for(int i=0;arry[i]!=0;i++) {
if(arry[i] !=NULL ) {
free(arry[i]);
arry[i]=NULL;
}
}
free(arry);//把形参置空
arry=NULL;
}
marry = NULL;//把实参也置空
return 0;
}

int freeArry2(char *** arry,int *depth,int *len){
int mydepth = *depth+1;
int mylen = *len;

if((*arry) != NULL) {    
    for(int i=0;i<mydepth;i++) {
        if((*arry)[i] !=NULL ) {
            free((*arry)[i]);
            (*arry)[i]=NULL;
        }
    }
    free(*arry);
    *arry=NULL;//把形参置空
}
arry = NULL;//把实参也置空
return 0;

}

int main(){

int depth = 8;
int len = 100;
char ** arry = NULL;
getmem(&arry,&depth,&len);
initArry(arry,&depth,&len);
printArry(arry,&depth,&len);

sortArry(arry,&depth,&len);
printArry(arry,&depth,&len);

sortArry1(arry,&depth,&len);
printArry(arry,&depth,&len);

freeArry(arry,&depth,&len);
arry = NULL;//把实参也置空
freeArry1(&arry,&depth,&len);
freeArry2(&arry,&depth,&len);
return 0;

}
在这里插入图片描述

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

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

相关文章

库存预占架构升级方案设计-交易库存中心 | 京东物流技术团队

背景介绍 伴随物流行业的迅猛发展&#xff0c;一体化供应链模式的落地&#xff0c;对系统吞吐、系统稳定发出巨大挑战&#xff0c;库存作为供应链的重中之重表现更为明显。近三年数据可以看出&#xff1a; 接入商家同比增长37.64%、货品种类同比增长53.66% 货品数量同比增长4…

临时功能展示数据库表未添加主键导致Excel导入数据重复

Java对Excel等文档解析上传到数据库或服务器问题记录 临时功能展示数据库表未添加主键导致Excel导入数据重复 如图,问题发现是因为Excel表中只有两千多条数据但导入数据库后却有五千多条,当时在代码中疯狂找原因也未果,最后尝试给数据库添加主键解决问题! 去除重复数据 总条…

jdk8对象列表使用stream流基于某个字段(或某些条件)实现去重

直接上代码&#xff1a;(实现了去重加排序的效果) //换行只是为了方便看 userList.stream().collect(Collectors.collectingAndThen(Collectors .toCollection(() -> new TreeSet<>(Comparator.comparing(User::getAge))), ArrayList::new));comparing&#xff08;比…

谁偷走了我的存储容量?预留空间OP参上!

大家好&#xff0c;我是五月。 前言 不知道你有没有发现&#xff0c;每当买回来一块U盘&#xff0c;插入电脑发现永远比所标的容量小。 到底是谁偷走了我的容量&#xff1f; 真凶就是预留空间&#xff08;Over Provisioning&#xff09;&#xff0c;简称OP。 预留空间OP是…

DSP,国产C2000,数字电源,电机专用,国产经典之作,新品上市

1、替代TI 的 TMS320F280049 2、独立双核&#xff0c;主频400MHz 3、单精度浮点运算&#xff0c;三角函数运算 4、Flash 1MB&#xff0c;SRAM 1MB 5、12bit ADC&#xff0c;采样率 3.45MSPS 6、16个高分辨率 ePWM 优点&#xff1a; 1、主频400MHz&#xff0c;运算能力强 2、独…

攻防世界-ext3

原题 解题思路 下载下来的文件解压就可以看到非常多的文件夹&#xff0c;直接搜索flag 明显用base64加密了&#xff1a;解码工具

Lazada为什么成为卖家新宠?趋势如何?

其实跨境销售是网络发达以来,很多国内的商家都在突破的点。只有真正打开自己的市场,这样才可以让销售能够直线上升。如果永远在国内进行销售,那么不仅仅会增加难度,并且也很有可能无法打开自己的销售思路,导致最终在时代的潮流中没落。那么如果想要进行跨境销售,渠道就是相当重…

交叉编译liblzma:64位版本

xmlIO.c:40:10: 致命错误&#xff1a; lzma.h&#xff1a;没有那个文件或目录40 | #include <lzma.h>在交叉编译libxml时&#xff0c;报错 为解决这个问题&#xff0c;编译liblzma 网址https://tukaani.org/xz/ 解压&#xff1a; tar jxvf xz-5.2.12.tar.bz2执行&#…

Java基础之IO流File类创建及删除

1.File类概述及构造方法 2.File类创建功能 文件创建成功&#xff01; 如果文件不存在&#xff0c;就创建文件&#xff0c;并返回true 如果文件存在&#xff0c;就不创建文件&#xff0c;并返回false 如果文件夹不存在&#xff0c;就创建文件夹&#xff0c;并返回true 如果文件…

树莓派3B安装64位操作系统

树莓派3B安装Ubuntu MATE_树莓派3b 安装ubuntu_雨田大大的博客-CSDN博客https://blog.csdn.net/lsjackson13/article/details/92423694?utm_mediumdistribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-92423694-blog-80716098.235%5Ev38%5Ep…

电路学习+硬件每日学习十个知识点(40)23.8.20 (希腊字母读音,阶跃信号和冲激信号的关系式,信号的波形变换,信号的基本运算,卷积积分,卷积和)

文章目录 1.信号具有时间特性和频率特性。2.模拟转数字&#xff0c;抽样、量化、编码3.阶跃信号和冲激信号4.信号的波形变换&#xff08;时移、折叠、尺度变换&#xff09;5.信号的基本运算&#xff08;加减、相乘、微分与积分、差分与累加&#xff09;5.1 相加减5.2 相乘5.3 微…

Gowin FPGA工程modelsim功能仿真和时序仿真

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Gowin FPGA工程的modelsim功能仿真和时序仿真 前言功能仿真时序仿真&#xff08;后仿真&#xff09; 前言 下面记录一下modelsim功能仿真和时序仿真的操作步骤&#xff0c;学…

持续集成与持续交付:现代软件测试的变革之路

引言 在数字化时代&#xff0c;软件开发的速度和复杂性都在不断增加。为了满足市场的需求&#xff0c;企业需要更快、更高效地交付高质量的软件产品。在这样的背景下&#xff0c;持续集成与持续交付&#xff08;CI/CD&#xff09;成为了软件开发和测试的核心实践。 软件开发的…

Android 之 Vibrator (振动器)

本节引言&#xff1a; 本节我们介绍的是Vibrator(振动器)&#xff0c;是手机自带的振动器&#xff0c;别去百度直接搜针振动器&#xff0c;因为 你的搜索结果可能是如图所示的神秘的道具&#xff0c;或者其他神秘道具&#xff1a; 嗯&#xff0c;说回本节介绍的Vibrator&#…

电路学习+硬件每日学习十个知识点(39)23.8.19 (电路模型,电感,电容)

文章目录 1.电力线路和通信线路2.实际电路的元器件3.集总参数元件&#xff08;类似于物理的质点&#xff09;4.电子电路习惯画法5.电感元件6.电容元件 1.电力线路和通信线路 电路的基本功能可分为两大类&#xff1a;一类电路进行能量的传输、分配和转换&#xff0c;如电力线路…

jdk生成jre供javaFx使用

文章目录 前言一、Jdk二、使用步骤1.进入到jdk目录下2.地址栏输入cmd3.执行生成命令4.注意 总结 前言 JavaFx开发桌面程序&#xff0c;发布给其它人时候需要附带jre 一、Jdk 自备jdk8、jdk11、jdk17等等 二、使用步骤 1.进入到jdk目录下 2.地址栏输入cmd 3.执行生成命令 b…

Error: Flash Download failed - “Cortex-M7“

选择对应FLM文件加上即可。 具体可参考&#xff1a; https://www.sunev.cn/embedded/669.html https://zhuanlan.zhihu.com/p/487664063

【Git】学习总结

【Git】学习总结 【一】安装【二】Git克隆项目代码【1】idea下载git项目【2】创建新的分支【3】新建的分支推送到远程【4】合并最新代码到主分支【5】切换分支 【三】提交本地项目到远程&#x1f680;1. 配置 Git&#x1f680;2. 创建项目远程仓库&#x1f680;3. 初始化本地仓…

江西萍乡能源石油化工阀门三维扫描3d测量抄数建模-CASAIM中科广电

长期以来&#xff0c;石油天然气、石油石化、发电和管道输送行业在环保、健康和安全保障方面一直承受着巨大的压力&#xff0c;他们必须确保相关规程在各项作业中得到全面贯彻。 阀门作为流体管道运输中的组成部分&#xff0c;其装配密封度是保证流体运输安全的重要一环&#…

将AI融入CG特效工作流;对谈Dify创始人张路宇;关于Llama 2的一切资源;普林斯顿LLM高阶课程;LLM当前的10大挑战 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 将AI融入CG特效工作流&#xff0c;体验极致的效率提升 BV1pP411r7HY 这是 B站UP主 特效小哥studio 和 拓星研究所 联合投稿的一个AI特…