数据结构(1)——静态一维数组的使用,附练习:给定两个数组求其交集(C语言)
一.概念
一维数组是数组中最简单的一种类型,并且后续的二维数组,多维数组都可以转化为一维数组,可见一维数组的重要性。首先一维数组中元素的关系是线性关系,所以它们在内存中的地址是连续的,并且由于数组一般不做插入和删除操作,因此。一旦建立一个数组,它们的关系就不再发生变动。在C语言中使用数组必须先进行定义。一维数组的定义方式为:
类型说明符 数组名 [常量表达式];
二. 使用方式
- 基本使用方式
数组元素是组成数组的基本单元。数组元素也是一种变量, 其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组元素的一般形式为:
数组名[下标]
- 赋值
给数组赋值的方法除了用赋值语句对数组元素逐个赋值外, 还可采用初始化赋值和动态赋值的方法。我们这里使用最简单的静态数组,初始化赋值的一般形式为:
类型说明符 数组名[常量表达式] = { 值, 值……值 };
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]);
}
}
四.最后
这个是我的第一次自己写,明天继续更新一维数组的动态使用。如果大家觉得哪里需要改进,请留言!!!
在最后,因为最近在读矛盾的《子夜》,想分享几句话给大家:
- 总之是外国人;他对我说;你们中国人真是了不起的宝贝,被人家打倒在地了,你们倒觉得躺在那里就比站着舒服些;你们不用腿走路了,你们就满地滚”
希望我们都勿忘国耻!!!中国人一直都是站着的。