顺序线性表的操作 (4人)
⑴ 问题描述:已知两长度相同的定长数组,他们分别存放相同个数的整数。实现要求:⑴ 两个数组大小的比较。若第一个数组中的数比第二个数组中的数大的个数大于第一个数组中的数比第二个数组中的数小的个数,认为第一个数组大;若第一个数组中的数比第二个数组中的数大的个数小于第一个数组中的数比第二个数组中的数小的个数,认为第一个数组小;若第一个数组中的数比第二个数组中的数大的个数等于第一个数组中的数比第二个数组中的数小的个数,认为两个数组相等。⑵ 有序序列数据输入模块,数据从键盘输入且是任意顺序,进行排序使其成为有序。⑶ 将排序后的第二个数组序列中的数逐个插入到前一个数组序列中,完成后两个数组中的数是非递减的,并且第一个数组中所有的数都不大于第二个数组中任意一个数。要求:不能另开辟数组,不能对任意一个数组进行排序操作。⑷ 设计一个菜单,上述操作要求都作为菜单中的主要菜单项。
1 #include2 #include 3 #include 4 using namespace std; 5 6 const int maxlen=1000;//线性表的最大长度 7 8 struct List 9 { 10 int Data[maxlen];//存放数据 11 int CurNum;//当前线性表 12 }; 13 14 void Intialize( List &A)//线性表初始化 15 { 16 A.CurNum = 0;//线性表元素个数为0 17 } 18 19 int Length(List &A)//求表长度的实现 20 { 21 return A.CurNum; 22 } 23 24 int Insert( List &A,const int i,const int x)//插入元素运算对应的函数 25 { 26 if(A.CurNum==maxlen)printf("溢出!\n");//溢出,不能插入 27 if(i<1||i>Length(A)+1)printf("插入范围有错!\n");//插入范围有错 28 else { 29 for(int j=A.CurNum-1;j>=i-1;j--){ 30 A.Data[j+1]=A.Data[j]; 31 } 32 A.Data[i-1]=x; 33 A.CurNum++; 34 return 0; 35 } 36 } 37 int Get_int(List &A,const int i,int &x)//按序号取元素运算 38 { 39 if(i<=0||i>A.CurNum)printf("序号错误!\n"); 40 else { 41 x=A.Data[i-1]; 42 return 0; 43 } 44 } 45 46 47 //两个数组进行比较大小 48 void CompareArray(int ArrayA[],int ArrayB[],int N) 49 { 50 int i,DataA,DataB; 51 52 int NumA = 0;//线性表A中元素 比线性表B中元素大的个数 53 int NumB = 0;//线性表A中元素 比线性表B中元素小的个数 54 55 List A,B; 56 57 Intialize(A);//初始化 58 Intialize(B);//初始化 59 for(i=0;i DataB)//线性表A 中的元素大 72 { 73 NumA++; 74 }else if(DataA NumB) 79 { 80 printf("第一个数组大!\n"); 81 }else if(NumA =i;j--){ 96 Get_int(A,j+1,data1);//取线性表A 中的元素 97 Get_int(A,j,data2);//取线性表A 中的元素 98 if(data1 =i;j--){111 Get_int(A,j+1,data1);//取线性表A 中的元素112 Get_int(A,j,data2);//取线性表A 中的元素113 if(data1>data2){114 temp=A.Data[j-1];115 A.Data[j-1]=A.Data[j];116 A.Data[j]=temp;117 exchange=true;118 }119 }120 i++;121 }while((i<=A.CurNum-1)&&(exchange=true));122 }123 printf("排序后的数据为:");124 for(i=0;i k)array[j]++;190 }191 array[count] = k;192 break;193 }194 }195 if(flags==false)//插在最后面196 {197 Insert(C,Length(C)+1,A.Data[i]);198 array[count] = Length(C);199 }200 //printf(" num%d\n",array[count]);201 count++;202 }203 204 printf("合并后的线性表:");205 for(int i=0;i C.Data[array[j]])220 {221 temp = C.Data[array[j]];222 }223 }224 for(j=i;j