Page 49 - 高中 信息技术 选择性必修1 数据与数据结构
P. 49

第二章 数据的存储方式                                                                                       2.2 数据的顺序存储与组织







                    (续表)

                               功能                                            程序段
                                                void array_insert(int a[],int n,int x,int i)
                       在数组a中第i(i≥0)个            {
                     位置插入元素x,原来第i到                  //第i到第n个元素向后移
                     第n个元素向后移(n为数组                  for(int j=n; j>=i; j--) a[j]=a[j-1];
                     中已有元素个数)。                      a[i-1]=x;
                                                }
                                                void array_delete(int a[],int n,int i)
                       从数组a中删除第i(i≥0)  {
                     个元素。                           for(int j=i; j<n; j++) a[j-1]=a[j];
                                                }



                         一维数组的几种基本操作示意图如图2-8所示。
                         通过对数组实施操作,可以对数组中的元素进行不同的组织与管理。例如,要在一组
                    有序数据中插入一个新的数据,并使插入后的这组数据依然有序,可以借助以下操作:
                         (1)遍历数组并查找适合新数据插入的数组位置i。
                         (2)将数组下标为i到n-1位置的数据向后移动。
                         (3)将新数据保存到数组下标为i的位置中。
                         程序代码可参考配套学习资源包中的文档“第二章\课本素材\有序数组的元素插

                    入.docx”。                 广东教育出版社
                         对于二维数组,最常见的操作是遍历,与一维数组的遍历不同的是,我们把二维数组
                    看成一个n行m列的矩阵,因此在程序实现时需要使用两重for循环,代码如表2-9所示。

                                                   表2-9  二维数组遍历的实现代码

                              功能                                            程序段

                                              #include <iostream>
                                              #define maxrow 5
                                              #define maxcolumn 10
                                              using namespace std;

                                              int a[maxrow][maxcolumn];

                                              int main()
                                              {
                                                  int i,j;
                       二维数组的遍历(遍历                 for(i=0; i<maxrow; i++)
                                                       for(j=0; j<maxcolumn; j++)
                     并赋值)。                             {
                                                            cin>>a[i][j];   //依次输入第(i,j)个元素
                                                       }
                                                  //按行列输出所有的元素
                                                  for(i=0; i<maxrow; i++)
                                                  {
                                                       for(j=0; j<maxcolumn; j++)
                                                            cout<<a[i][j]<<" ";
                                                       cout<<endl;
                                                  }
                                              }
                                                                                                                    41 41







          21X2204.indd   41                                                                                        2019/9/26   13:53:07
   44   45   46   47   48   49   50   51   52   53   54