2021-06-17

数据结构(1)——静态一维数组的使用,附练习:给定两个数组求其交集(C语言)

一.概念

一维数组是数组中最简单的一种类型,并且后续的二维数组,多维数组都可以转化为一维数组,可见一维数组的重要性。首先一维数组中元素的关系是线性关系,所以它们在内存中的地址是连续的,并且由于数组一般不做插入和删除操作,因此。一旦建立一个数组,它们的关系就不再发生变动。在C语言中使用数组必须先进行定义。一维数组的定义方式为:
类型说明符 数组名 [常量表达式];

二. 使用方式

  1. 基本使用方式

数组元素是组成数组的基本单元。数组元素也是一种变量, 其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组元素的一般形式为:
数组名[下标]

  1. 赋值
    给数组赋值的方法除了用赋值语句对数组元素逐个赋值外, 还可采用初始化赋值和动态赋值的方法。我们这里使用最简单的静态数组,初始化赋值的一般形式为:
    类型说明符 数组名[常量表达式] = { 值, 值……值 };
int a[10]={ 0,1,2,3,4,5,6,7,8,9 };

三.练习

题目:给定两个一维数组,将两个一维数组求交集

思路:1.首先因为题目没有告诉使用的是有序数组还是无序,为了提高代码实用性,将两个数组首先进行排序,这里我使用的是冒泡排序写了一个函数;
void soultion(int n,int arr[]){//冒泡排序 
	int i,j,temp;
	for(i = 0;i<n;i++){
		for( j = i+1;j<n;j++){
			if(arr[i]>arr[j]){
				temp = arr[i];
				arr[i] = arr[j];
				arr[j] =temp;
			}
		}
	}
}
2.其次为了防止输出结果中出现重复值,这里进行数组的删除重复值,我在这里写了一个函数,在主函数中进行调用
void cancel_repetition(int n,int a[]){//删除数组中重复的元素 
	int dispose[n];
	int i = 0,j =1,t =0,p;
	while(j<n){
		
	    	if(a[i] != a[j])
	    	{ a[i+1] = a[j];
			   i++;
	    		
			}
			  
			j++;
	   
		
	}
}
3.最后, 将我们使用的数组进行初始化 ,并且进行交集的运算,并且输出结果
void main(){
	int a[] = {2,2,6,7,8,10};
	int b[] = {4,5,7,3,2,9};
	soultion(6,b);
	soultion(6,a);
	int result[10];
	int i,j = 0,c = 0,n;
	//交集运算 
	for(i = 0;i<6;i++)
	  {for(j = 0;j<6;j++)
	  	if(a[i] == b[j]) {
	  	 	result[c++] = a[i];
		   }
	  }
	cancel_repetition(c,result);
	  for(n = 0;n<c-1;n++){
	  	printf("%d\n",result[n]);
	  }
} 

四.最后

这个是我的第一次自己写,明天继续更新一维数组的动态使用。如果大家觉得哪里需要改进,请留言!!!
在最后,因为最近在读矛盾的《子夜》,想分享几句话给大家:

  • 总之是外国人;他对我说;你们中国人真是了不起的宝贝,被人家打倒在地了,你们倒觉得躺在那里就比站着舒服些;你们不用腿走路了,你们就满地滚”

希望我们都勿忘国耻!!!中国人一直都是站着的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值