当前位置: 首页 > 编程日记 > 正文

基础数据结构【一】————数组

二维数组相乘,矩阵相乘,

#include <iostream>
using namespace std;void MatrixMultiply(int*, int*, int*, int, int, int);
int main()
{int M, N, P;int i, j;//矩阵A部分 cout << "请输入矩阵A的维数(M,N): " << endl;cout << "M= ";cin >> M;cout << "N= ";cin >> N;int* A = new int[M * N];cout << "[请输入矩阵A的各个元素]" << endl;for (i = 0; i < M; i++)for (j = 0; j < N; j++){cout << "a" << i << j << "=";cin >> A[i * N + j];}//矩阵B部分 cout << "请输入矩阵B的维数(N,P): " << endl;cout << "N= ";cin >> N;cout << "P= ";cin >> P;int* B = new int[N * P];cout << "[请输入矩阵B的各个元素]" << endl;for (i = 0; i < N; i++)for (j = 0; j < P; j++){cout << "b" << i << j << "=";cin >> B[i * P + j];}int* C = new int[M * P];MatrixMultiply(A, B, C, M, N, P); //调用函数 cout << "[AxB的结果是]" << endl;for (i = 0; i < M; i++){for (j = 0; j < P; j++)cout << C[i * P + j] << "\t";cout << endl;}system("pause");
}
//进行矩阵相乘 
void MatrixMultiply(int* arrA, int* arrB, int* arrC, int M, int N, int P)
{if (M <= 0 || N <= 0 || P <= 0){cout << "[错误:维数M,N,P必须大于0]" << endl;return;}for (int i = 0; i < M; i++)for (int j = 0; j < P; j++){int Temp;Temp = 0;for (int k = 0; k < N; k++)Temp = Temp + arrA[i * N + k] * arrB[k * P + j];arrC[i * P + j] = Temp;}
}

二维数组,矩阵相加,函数调用

#include <iostream>
using namespace std;const int  ROWS = 3;
const int COLS = 3;
void MatrixAdd(int*, int*, int*, int, int);   //函数原型
int main()
{int A[ROWS][COLS] = { {1,3,5},{7,9,11},{13,15,17} };int B[ROWS][COLS] = { {9,8,7},{6,5,4},{3,2,1} };int C[ROWS][COLS] = { 0 };cout << "[矩阵A的各个元素]" << endl;  //输出矩阵A的内容for (int i = 0; i < ROWS; i++){for (int j = 0; j < COLS; j++)cout << A[i][j] << "\t";cout << endl;}cout << "[矩阵B的各个元素]" << endl;	//输出矩阵B的内容for (int i = 0; i < ROWS; i++){for (int j = 0; j < COLS; j++)cout << B[i][j] << "\t";cout << endl;}MatrixAdd(&A[0][0], &B[0][0], &C[0][0], ROWS, COLS);cout << "[显示矩阵A和矩阵B相加的结果]" << endl;	//输出A+B的内容for (int i = 0; i < ROWS; i++){for (int j = 0; j < COLS; j++)cout << C[i][j] << "\t";cout << endl;}system("pause");
}
void MatrixAdd(int* arrA, int* arrB, int* arrC, int dimX, int dimY)
{if (dimX <= 0 || dimY <= 0){cout << "矩阵维数必须大于0" << endl;return;}for (int row = 1; row <= dimX; row++)for (int col = 1; col <= dimY; col++)arrC[(row - 1) * dimY + (col - 1)] = arrA[(row - 1) * dimY + (col - 1)] + arrB[(row - 1) * dimY + (col - 1)];
}

数组压缩降维

#include <iostream>
using namespace std;
#define ARRAY_SIZE 5  //矩阵的维数 
int getValue(int ,int);
int A[ARRAY_SIZE][ARRAY_SIZE]={ //上三角矩阵的内容 {7, 8, 12, 21, 9}, {0, 5, 14,  17, 6}, {0, 0, 7, 23, 24}, {0, 0, 0,  32, 19}, {0, 0, 0,  0,  8}};  
//一维数组的数组声明 
int B[ARRAY_SIZE*(1+ARRAY_SIZE)/2];  
int main()
{int i=0,j=0;int index;    cout<<"=========================================="<<endl;cout<<"上三角形矩阵:"<<endl;for ( i = 0 ; i < ARRAY_SIZE ; i++ ) {for ( j = 0 ; j < ARRAY_SIZE ; j++ ) cout<<"\t"<<A[i][j];cout<<endl;    }//将右上三角矩阵压缩为一维数组 index=0;for ( i = 0 ; i < ARRAY_SIZE ; i++ ) {for ( j = 0 ; j < ARRAY_SIZE ; j++ ) {if(A[i][j]!=0) B[index++]=A[i][j];}}cout<<"=========================================="<<endl;cout<<"以一维数组的方式表示:"<<endl;cout<<"\t[";for ( i = 0 ; i < ARRAY_SIZE ; i++ ) {for ( j = i ; j < ARRAY_SIZE ; j++ ) cout<<" "<<getValue(i,j);}cout<<" ]";cout<<endl;    system("pause");
}
int getValue(int i, int j) {int index = ARRAY_SIZE*i - i*(i+1)/2 + j;return B[index];
}

稀疏矩阵,二维数组,内存压缩

#include <iostream>
#include <ctime>
#include <cstdlib>using namespace std;
const int _ROWS = 8;		//定义行数
const int _COLS = 9;		//定义列数
const int _NOTZERO = 8;		//定义稀疏矩阵中不为0的个数int main ()
{  int i,j,tmpRW,tmpCL,tmpNZ;int temp=1;int Sparse[_ROWS][_COLS];		//声明稀疏矩阵int Compress[_NOTZERO][3];		//声明压缩矩阵srand(time(NULL));for (i=0;i<_ROWS;i++)			//将稀疏矩阵的所有元素设为0for (j=0;j<_COLS;j++)Sparse[i][j]=0;tmpNZ=_NOTZERO;for (i=1;i<tmpNZ+1;i++){tmpRW = rand()%_ROWS;tmpCL = rand()%_COLS;if(Sparse[tmpRW][tmpCL]!=0)//避免同一个元素设定两次数值而造成压缩矩阵中有0tmpNZ++;Sparse[tmpRW][tmpCL]=i; //随机产生稀疏矩阵中非零的元素值}cout<<"[稀疏矩阵的各个元素]"<<endl; //输出稀疏矩阵的各个元素for (i=0;i<_ROWS;i++){  for (j=0;j<_COLS;j++)cout<<"["<<Sparse[i][j]<<"] ";cout<<endl;}//开始压缩稀疏矩阵Compress[0][0] = _ROWS;Compress[0][1] = _COLS;Compress[0][2] = _NOTZERO;for (i=0;i<_ROWS;i++)for (j=0;j<_COLS;j++)if (Sparse[i][j] != 0){  Compress[temp][0]=i;Compress[temp][1]=j;Compress[temp][2]=Sparse[i][j];temp++;}cout<<"[稀疏矩阵压缩后的内容]"<<endl; //输出压缩矩阵的各个元素for (i=0;i<_NOTZERO+1;i++){  for (j=0;j<3;j++)cout<<"["<<Compress[i][j]<<"] ";cout<<endl;}system("pause");
}

指针数组与二维字符串数组 :

由以下运行结果可知,指针数组内存连续不存在内存浪费问题,char name1[4][10]数组缺点就是所有字符类型的内存空间长度都会开辟出来

#include <iostream>
#include <cstdlib>using namespace std;int main()
{const char* name[4] = { "J", "Mo", "Bec", "Bush" };	//一维指针数组 char name1[4][10] = { "J", "Mo", "Bec", "Bush" };//二维字符串数组  int i;cout << "---------- 一维指针数组的存储方式 --------------" << endl;for (i = 0; i < 4; i++){cout << "name[" << i << "] = \"" << name[i] << "\"\t";cout << "所占地址:" << (int*)name[i] << endl; //输出name[i]所占地址   }cout << "------------ 二维字符串数组的存储方式--------------" << endl;for (i = 0; i < 4; i++){cout << "name1[" << i << "] = \"" << name1[i] << "\"\t";cout << "所占地址:" << (int*)name1[i] << endl; //输出name1[i]所占地址  }cout << "------------ 数据类型长度 --------------" << endl;cout << "char = " << sizeof(char) << endl;cout << "int = " << sizeof(int) << endl;cout << "double = " << sizeof(double) << endl;cout << "float = " << sizeof(float) << endl;cout << "uint8_t = " << sizeof(uint8_t) << endl;cout << "uint16_t = " << sizeof(uint16_t) << endl;cout << "size_t = " << sizeof(size_t) << endl;system("pause");return 0;
}

win_x64数据类型                                                               win_x86                                                   

一维数组:记录5个学生分数,并且输出(一维数组的构建与访问)

int main()
{int Score[5] = { 87,66,90,65,70 };          //定义整数数组Score[5], 并设置5个成绩 int count, Total_Score = 0;for (count = 0; count < 5; count++)	     	// 执行 for 循环读取学生成绩 {cout << "第" << count + 1 << "位学生的分数:" << Score[count] << endl;Total_Score += Score[count];	       	//由数组中读取分数并计算总分}cout << "-------------------------" << endl;cout << "5位学生的总分:" << Total_Score << endl;    //输出成绩总分system("pause");return 0;
}

二维数组:记录3个销售员半年的销售成绩,并且求取每个销售员的半年总成绩与每个月3个销售员的月总销售成绩(2维数组的操作与访问)

#include <iostream>
using namespace std;int main()
{int i, j, sum, max = 0, no = 1;int sale[3][6] = { {112,76,95,120,98,68},{90,120,88,112,108,120},{108,99,126,90,76,98} };for (i = 0; i < 3; i++){sum = 0;for (j = 0; j < 6; j++)sum += sale[i][j];//加上每月的业绩金额  cout << "销售员" << i + 1 << "的前半年销售总金额为 " << sum << endl;cout << "------------------------------------" << endl;}for (i = 0; i < 6; i++){sum = 0;for (j = 0; j < 3; j++)sum += sale[j][i];// 加上每月的业绩金额  cout << "所有销售员" << i + 1 << "月的销售总金额为 " << sum << endl;cout << "=====================================" << endl;}system("pause");return 0;
}

二阶行列式(二维数组) 运算

#include <iostream>
using namespace std;
int main()
{int arr[2][2];int sum;cout<<"|a1 b1|"<<endl;cout<<"|a2 b2|"<<endl;cout<<"请输入a1:";cin>>arr[0][0];cout<<"请输入b1:";cin>>arr[0][1];cout<<"请输入a2:";cin>>arr[1][0];cout<<"请输入b2:";cin>>arr[1][1];sum = arr[0][0]*arr[1][1]-arr[0][1]*arr[1][0];//求二阶行列式的值 cout<<"|"<<arr[0][0]<<" "<<arr[0][1]<<"|"<<endl;cout<<"|"<<arr[1][0]<<" "<<arr[1][1]<<"|"<<endl;cout<<"sum="<<sum<<endl;system("pause");return 0;
}

三维数组,及其遍历(求取满足一定条件下的操作,求和,寻找最小值)

#include <iostream>
using namespace std;int main()
{int i, j, k;int sum = 0;int arr[4][3][3] = { {{1,-2,3},  {4,5,-6},   {8,9,2}},{{7,-8,9},  {10,11,12}, {-1,3,2}},{{-13,14,15},{16,17,18},{3,6,7}},{{19,20,21},{-22,23,24},{-6,9,12}} };	//声明并设置数组的元素值  for (i = 0; i < 4; i++){for (j = 0; j < 3; j++){for (k = 0; k < 3; k++){sum += arr[i][j][k];if (arr[i][j][k] < 0)arr[i][j][k] = 0;		// 元素值为负数,则归零cout << arr[i][j][k] << "\t";if (min >= arr[i][j][k])min = arr[i][j][k];	}cout << endl;}cout << endl;}cout << "---------------------------" << endl;cout << "原数组的所有元素值总和=" << sum << endl;cout << "---------------------------" << endl;system("pause");return 0;
}

结构体数组:允许用户自定义数据类型,成为派生数据类型,总而言之,就是可以将一个相关的拥有不同数据类型的数据组合在一起成为一种新的数据类型 // 可声明 变量 数组  指针 甚至其他结构成员等

#include <iostream>
int main()
{struct student{char name[10];int score[3];// 可声明 变量 数组  指针 甚至其他结构成员等};struct student group1[3] = {{"a",81,82,83},{"b",91,92,93},{"name",71,72,73}};for (int i = 0; i < 3; ++i) {std::cout << group1[i].name << " \t" <<"chinese_score = " << group1[i].score[0] << "\t" <<"math_score = " << group1[i].score[1] << "\t" <<"english_score = " << group1[i].score[2] << "\t" << std::endl;std::cout << "-------------------------------" << std::endl;}system("pause");return 0;
}

字符串数组:

#include <iostream>
#include <cstdlib>
#include <cstring>	
#include <cctype>		//包括此判断函数文件using namespace std;int main()
{char Str[6][30] = { "张继    枫桥夜泊",       // 声明并初始化二维字符串数组"================",   // 省略了每个元素之间的大括号"月落乌啼霜满天","江枫渔火对愁眠","姑苏城外寒山寺","夜半钟声到客船" };int i;for (i = 0; i < 6; i++)cout << Str[i] << endl;                   // 输出字符串数组的内容int lower = 0;char string[40];cout << "请输入字符串:";cin.getline(string, 40);			//输入的字符串有40个字符 int len = strlen(string);for (int i = 0; i <= len; i++)if (islower(string[i]) != 0)		//是小写字符则加1	lower++;cout << string << "字符串的小写字符有 " << lower << "个" << endl;system("pause");return 0;
}

相关文章:

Fragment 和 FragmentActivity的使用

Fragment 和 FragmentActivity的使用 http://blog.csdn.net/izy0001989624/article/details/17072211转载于:https://www.cnblogs.com/as3lib/p/6126761.html

win10 VMware15 安装 CentOS6.4 64位(慢慢弄吧,别急)

参考&#xff1a;CentOS 6.4安装&#xff08;超级详细图解教程&#xff09; 可以都不勾&#xff0c;有需要&#xff0c;以后使用中有需要再手动安装 除了KDE&#xff0c;其他都选就可以了 系统管理、虚拟化、负载平衡器、高可用性可以都不选

Nginx网站常见的跳转配置实例

相信大家在日常运维工作中如果你用到nginx作为前端反向代理服务器的话&#xff0c;你会对nginx的rewrite又爱又恨&#xff0c;爱它是因为你搞定了它&#xff0c;完成了开发人员的跳转需求后你会觉得很爽&#xff0c;觉得真的很强大&#xff0c;恨它是因为当一些稀奇古怪跳转的需…

基础数据结构【二】————动态数组,单向链表及链表的反转

DEMO1&#xff1a; 动态分配变量&#xff08;链表&#xff0c;而静态数组是线性表&#xff0c;意味着动态数组访问和遍历复杂度为O&#xff08;n&#xff09;,而插入和删除复杂度为O&#xff08;1&#xff09;&#xff0c;而静态数组线性表则完全相反&#xff09; int* in…

VMware15克隆虚拟机Centos

在克隆虚拟机之前&#xff0c;我们需要了解以下文件&#xff1a; 1、/etc/udev/rules.d/70-persistent-net.rules 这是网卡有关信息的配置文件&#xff0c;我们可以先查看一下master的网卡信息&#xff08;当然也可以用ifconfig命令查看&#xff09; 要注意的是网卡名称以及…

EXPDP 时ORA-27054 问题处置

现象&#xff1a;[oracleoracle1 ~]$ expdp xian/xian schemasxian directorydumpdir dumpfilexian.dmp LOGFILExian.logExport: Release 10.2.0.5.0 - 64bit Production on Friday, 02 December, 2016 20:19:48Copyright (c) 2003, 2007, Oracle. All rights reserved.Connec…

OSC源创会往期图文回顾链接地址收藏

为什么80%的码农都做不了架构师&#xff1f;>>> 格式&#xff1a;源创会报名链接地址 - 源创会结束后图文回顾链接地址 【深圳】第1期】- 图文回顾【广州】第2期】- 图文回顾【北京】第3期】- 图文回顾【珠海】第4期】- 图文回顾【深圳】第5期】- 图文回顾--------…

ionic + cordova+angularJs 搭建的H5 App完整版总结

为期半个月的项目实践开发&#xff0c;已完整告一段落&#xff0c;团队小组获得第一名&#xff0c;辛苦总算没有白费&#xff0c;想起有一天晚上&#xff0c;整个小组的人&#xff0c;联调到12点才从公司回去&#xff0c;真是心酸。这里总结一下&#xff0c;项目过程中遇到的问…

基础数据结构【三】————老鼠走迷宫问题————堆栈应用

假设&#xff1a;老鼠在一个二维地图中i行走&#xff0c;地图中大部分路径被墙阻断&#xff0c;无法前进。老鼠可以按照尝试错误的方法找到出口。只是&#xff0c;这只老鼠必须具备走错路时候就退回来&#xff0c;并且把走过的路记下来&#xff0c;避免下次走重复路&#xff0c…

eclipse Debug中step into功能失灵的问题

step into 和 step over功能一样&#xff0c;无法进入方法内部&#xff0c;解决方法如下&#xff1a; 需要使用jdk中的jre&#xff0c;而不是独立安装的jre 再次Debug&#xff0c;当运行到断点的时候&#xff0c;点击step into&#xff08;F5&#xff09;就可以看见println函数…

Linux 基金会宣布红队项目,致力于孵化开源安全工具

百度智能云 云生态狂欢季 热门云产品1折起>>> 谁都想软件有着很高的安全性吧。毕竟&#xff0c;每一天都会有不一样的安全漏洞&#xff0c;从糟糕软件的沼泽中冒出来。 在近期举办的开源领导力峰会上&#xff0c;Linux 基金会宣布了新的红队项目&#xff08;Red Tea…

基础数据结构【四】————环形链表与多项式

主要演示环形列表节点的创建插入&#xff0c; 删除&#xff0c;遍历&#xff0c;环形链表连接 。双向链表节点的建立与插入 &#xff0c;双向链表中节点的删除 以及环形链表在多项式中的应用 DEMO1:环形链表节点的创建与插入 /* [名称]:ch03_08.cpp [示范]:环形链表节点的创…

关联scala源码

首先需要去官网下载sources 将下载好的压缩包拷贝到scala安装的lib目录下&#xff0c;解压 ctrlb以后 查看源码, 选择要查看的方法或者类, 输入 ctrl b import scala.io.StdIn 如果想看StdIn的源码&#xff0c;则将光标放在StdIn处&#xff0c;ctrlb 如果想查看io包下的内容&…

MySQL安装使用的2个问题

问题:1.遇到不输入密码能登上 ,使用密码报错.2.(解压版的) 在cmd输入>mysql –u root –p 时&#xff0c;按enter回车时&#xff0c;会叫你输入密码Enter password____,否则出现错误&#xff1a;ERROR 1045(28000):Access denied for user’root’’localhost’(using passw…

Flink1.7.2 sql 批处理示例

Flink1.7.2 sql 批处理示例 源码 https://github.com/opensourceteams/flink-maven-scala概述 本文为Flink sql Dataset 示例主要操作包括:Scan / Select,as (table),as (column),limit,Where / Filter,between and (where),Sum,min,max,avg,(group by ),group by having,disti…

ISP 【一】————boost标准库使用——批量读取保存文件 /boost第三方库的使用及其cmake添加,图像gramma

CMakeLists.txt文件中需要添加第三方库&#xff0c;并企鹅在CMakeLists.txt中添加 include_directories(${PROJECT_SOURCE_DIR}/../3party/gflags-2.2.2/include) link_directories(${PROJECT_SOURCE_DIR}/../3party/boost-1.73.0/lib-import) target_link_libraries( gram…

简单ajax类, 比较小, 只用ajax功能时, 可以考虑它

忘了哪儿转来的了, 不时的能够用上, 留存一下<script language"javascript" type"text/javascript"> /***var ajaxAjax();/*get使用方式* /ajax.get("php_server.php?id1&namexxx", function(data){ alert(data); //d…

Hadoop 三大发行版本

Hadoop三大发行版本&#xff1a;Apache、Cloudera、Hortonworks。 Apache版本最原始&#xff08;最基础&#xff09;的版本&#xff0c;对于入门学习最好。 Cloudera在大型互联网企业中用的较多。 Hortonworks文档较好。 1. Apache Hadoop 官网地址&#xff1a;http://had…

MongoDB主动撤回SSPL的开源许可申请

2018年10月&#xff0c;MongoDB将其开源协议更换为SSPL&#xff0c;虽然在当时引起了很大的争议&#xff0c;但是MongoDB始终坚信SSPL符合符合开源计划的批准标准&#xff0c;并向Open Source Initiative &#xff08;以下简称OSI&#xff09;提交了申请。不过&#xff0c;近日…

MATLAB【八】———— matlab 读取单个(多个)文件夹中所有图像

0.matlab 移动&#xff08;复制&#xff09;文件到另一个文件夹 sourcePath .\Square_train; targetPath .\Square_test; fileList dir(sourcePath); for k 3 :5: length(fileList) movefile([sourcePath,\,fileList(k).name],targetPath); end %copyfile([sourcePat…

JAVA IO学习

2019独角兽企业重金招聘Python工程师标准>>> 很多初学者接触IO时&#xff0c;总是感觉东西太多&#xff0c;杂乱的分不清楚。其实里面用到了装饰器模式封装&#xff0c;把里面的接口梳理一下之后&#xff0c;就会觉得其实蛮清晰的 相关的接口和类 接口或类描述Input…

Java面向对象三大特征 之 多态性

1、理解多态性&#xff1a;可以理解为一个事物的多种形态 2、对象的多态性&#xff1a;父类的引用指向子类的对象&#xff08;子类的对象赋给父类的引用&#xff09; 3、多态的使用&#xff1a;虚拟方法的调用 子类中定义了与父类同名同参数的方法&#xff08;重写&#xff…

Bootstrap3基础 btn-group-vertical 按钮组(横着、竖着排列)

内容参数OS Windows 10 x64 browser Firefox 65.0.2 framework Bootstrap 3.3.7 editor Visual Studio Code 1.32.1 typesetting Markdowncode <!DOCTYPE html> <html lang"zh-CN"><head><meta charset&quo…

ISP【二】————camera ir图

1. 加串解串芯片作用&#xff1f; A: 加串和解串是成对出现的&#xff0c;串行器在模组内&#xff0c;将并行信号转换为串行信号&#xff0c;然后用一根线可以实现远距离传输。sensor输出的raw data如果不加串&#xff0c;需要&#xff18;根线传输&#xff0c;很难传输很远&a…

Hadoop运行模式 之 本地运行模式

Hadoop的运行模式包括&#xff1a;本地模式、伪分布式模式以及完全分布式模式 Hadoop官网地址&#xff1a;https://hadoop.apache.org/ 本次使用的Hadoop的版本是2.7.2 官网文档&#xff1a;https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/Single…

一些使用Vim的小技巧

7.增加注释&#xff08;一个操作应用在多行&#xff09;比如需要增加#或者是//这种注释&#xff1a;Ctrl v 定位到开始行&#xff0c;然后选定需要的行&#xff0c;然后执行 I命令&#xff0c;然后输入 # 或 //&#xff0c;然后按 Esc键两次&#xff0c;即可把注释操作应用到所…

SpringBoot注解大全 转

2019年3月17日22:30:10 一、注解(annotations)列表 SpringBootApplication&#xff1a;包含了ComponentScan、Configuration和EnableAutoConfiguration注解。其中ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。 Configuration 等同于spring的XML配置…

MATLAB【九】————ICP算法实现

1.ICP推导与求解 https://zhuanlan.zhihu.com/p/35893884 2.算法实现&#xff1a; % 程序说明&#xff1a;输入data_source和data_target两个点云&#xff0c;找寻将data_source映射到data_targe的旋转和平移参数 clear; close all; clc; %% 参数配置 kd 1; inlier_ratio …

Centos 7环境下源码安装PostgreSQL数据库

马上就要去实习了&#xff0c;工作内容是搞数据仓库方面的&#xff0c;用的是postgresql关系型数据库&#xff0c;于是自己先来了解下这种数据的用法&#xff0c;之后说说这个数据库和MySQL的关系和区别。 1.Postgresql简介 看了下官网上的介绍&#xff0c;全球最高级的开源关系…

Oracle job procedure 存储过程定时任务

Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能&#xff0c;可以在指定的时间点或每天的某个时间点自行执行任务。 一、查询系统中的job&#xff0c;可以查询视图 --相关视图 select * from dba_jobs; select * from all_jobs; select * from user_jobs; -…