数组

广告位

数组基础知识 数组是一个容器,该容器可容纳固定数目项目,这些项目应该都是相同的类型。大多数的数据结构的利用数组…

数组基础知识

数组是一个容器,该容器可容纳固定数目项目,这些项目应该都是相同的类型。大多数的数据结构的利用数组来实现它们的算法。以下我们来了解数组中的概念和一些重要的术语。

  • 元素− 存储在数组中的每个项被称为一个元素。

  • 索引− 在一个数组元素所在的每个位置,是具有一个用于识别该元素的数值索引。

数组表示

数组

按照如上所示图中,以下是要考虑的重要问题。

  • 索引从 0 开始

  • 数组的长度为 8,这意味着它可以存储 8 个元素。

  • 每个元素可以通过它的索引来访问。例如,我们可以在索引6获取元素的值:9。

基本操作

以下是由数组所支持的基本操作。

  • 遍历− 一个一个地打印所有的数组元素。

  • 插入− 给定索引处添加(插入)元素。

  • 删除− 删除给定索引处的元素。

  • 搜索− 搜索用特定索引或元素值。

  • 更新 − 更新给定索引处的元素。

在C语言中,当初始化一个数组大小,然后将其分配元素的默认值,在下列顺序。

数据类型 默认值
bool false
char 0
int 0
float 0.0
double 0.0f
void
wchar_t 0

插入操作

插入操作是插入一个或多个数据元素到一个数组。根据要求,新元素可以在开始,结束或数组中的任何给定的索引位置加入。

在这里,可以看到插入操作的实际执行,我们在数组的末尾添加(插入)数据 −

算法

数组是一个有 MAX 个元素的线性无序数组。

示例

结果

LA是一个线性数组(无序)配有N个元素,K是正整数且 K<= N。 下面就是 ITEM 插入到 LA 的第 K 个位置的算法

1. Start  2. Set J = N  3. Set N = N+1  4. Repeat steps 5 and 6 while J >= K  5. Set LA[J+1] = LA[J]  6. Set J = J-1  7. Set LA[K] = ITEM  8. Stop 

示例

下面是上述算法的执行 −

#include <stdio.h>  main() {     int LA[] = {1,3,5,7,8};     int item = 10, k = 3, n = 5;     int i = 0, j = n;          printf("The original array elements are :n");  	     for(i = 0; i<n; i++) {        printf("LA[%d] = %d n", i, LA[i]);     }           n = n + 1;  	     while( j >= k){        LA[j+1] = LA[j];        j = j - 1;     }  	     LA[k] = item;          printf("The array elements after insertion :n");  	     for(i = 0; i<n; i++) {        printf("LA[%d] = %d n", i, LA[i]);     }  } 

当编译和执行,上面的程序产生以下结果 –

The original array elements are :  LA[0]=1   LA[1]=3   LA[2]=5   LA[3]=7   LA[4]=8   The array elements after insertion :  LA[0]=1   LA[1]=3   LA[2]=5   LA[3]=10   LA[4]=7   LA[5]=8  

删除操作

删除指从数组中删除去现有元素,并重新组织数组的所有元素。

算法

考虑 LA 是一个具有 n 个元素线性数组,以及 K 是正整数,其中 K<= N。下面的算法是删除在 LA 中第 K 个位置的可用元素。

1. Start  2. Set J = K  3. Repeat steps 4 and 5 while J < N  4. Set LA[J-1] = LA[J]  5. Set J = J+1  6. Set N = N-1  7. Stop 

示例

下面是上述算法的执行 −

#include <stdio.h>  main() {     int LA[] = {1,3,5,7,8};     int k = 3, n = 5;     int i, j;          printf("The original array elements are :n");  	     for(i = 0; i<n; i++) {        printf("LA[%d] = %d n", i, LA[i]);     }           j = k;  	     while( j < n){        LA[j-1] = LA[j];        j = j + 1;     }  	     n = n -1;          printf("The array elements after deletion :n");  	     for(i = 0; i<n; i++) {        printf("LA[%d] = %d n", i, LA[i]);     }  } 

当编译和执行,上面的程序产生以下结果 –

The original array elements are :  LA[0]=1   LA[1]=3   LA[2]=5   LA[3]=7   LA[4]=8   The array elements after deletion :  LA[0]=1   LA[1]=3   LA[2]=7   LA[3]=8  

搜索操作

可以在数组元素的值或它的索引执行搜索。

算法

考虑 LA 是一个具有 n 个元素线性数组,以及 K 是正整数,如 K<= N。下面的算法是使用顺序搜索找出元素 ITEM 的值。

1. Start  2. Set J = 0  3. Repeat steps 4 and 5 while J < N  4. IF LA[J] is equal ITEM THEN GOTO STEP 6  5. Set J = J +1  6. PRINT J, ITEM  7. Stop 

示例

下面是上述算法的执行 –

#include <stdio.h>  main() {     int LA[] = {1,3,5,7,8};     int item = 5, n = 5;     int i = 0, j = 0;          printf("The original array elements are :n");  	     for(i = 0; i<n; i++) {        printf("LA[%d] = %d n", i, LA[i]);     }           while( j < n){  	        if( LA[j] == item ){           break;        }  		        j = j + 1;     }  	     printf("Found element %d at position %dn", item, j+1);  } 

当编译和执行,上面的程序产生以下结果 –

The original array elements are :  LA[0]=1   LA[1]=3   LA[2]=5   LA[3]=7   LA[4]=8   Found element 5 at position 3 

更新操作

更新操作是从数组指定索引处更新指定的现有元素。

算法

考虑 LA 是一个具有 n 个元素线性数组,K是正整数,且 K<= N。下面算法是更新在 LA 的第K个位置的可用元素。

1. Start  2. Set LA[K-1] = ITEM  3. Stop 

示例

下面是上述算法的执行

#include <stdio.h>  main() {     int LA[] = {1,3,5,7,8};     int k = 3, n = 5, item = 10;     int i, j;          printf("The original array elements are :n");  	     for(i = 0; i<n; i++) {        printf("LA[%d] = %d n", i, LA[i]);     }           LA[k-1] = item;       printf("The array elements after updation :n");  	     for(i = 0; i<n; i++) {        printf("LA[%d] = %d n", i, LA[i]);     }  } 

当编译和执行,上面的程序产生以下结果

The original array elements are :  LA[0]=1   LA[1]=3   LA[2]=5   LA[3]=7   LA[4]=8   The array elements after updation :  LA[0]=1   LA[1]=3   LA[2]=10   LA[3]=7   LA[4]=8

贺, 贺朝

关于作者: 贺朝

为您推荐