课后习题 2-9 前后两部分数组位置互换
Posted slowisfast
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了课后习题 2-9 前后两部分数组位置互换相关的知识,希望对你有一定的参考价值。
题目:
已知在一维数组A[m+n]中依次存放着两个顺序表A和B,试编写一个函数,将两个顺序表的位置互换。
Array.h
#pragma once #include<iostream> using namespace std; class Array { public: int* data; int maxSize; int len; Array(int size) { maxSize = size; data = new int[maxSize]; len = 0; } void creat(int arr[], int n) { for (int i = 0; i < n; i++) { data[i] = arr[i]; len++; } } void addArr(Array b) { for (int i = 0; i < b.len; i++) { data[i + len] = b.data[i]; } len += b.len; } void show() { for (int i = 0; i < len; i++) { cout << data[i] << " "; } cout << endl; } };
ArrayTools.h
#pragma once #include"Array.h" class ArrayTools { public: static void upside(Array& A, int m, int n) { int temp; if (m <= n) { int gap = n - m; for (int i = A.len + gap; i >= m; i--) { A.data[i] = A.data[i - gap]; } for (int i = 0; i < n; i++) { temp = A.data[i]; A.data[i] = A.data[i + n]; A.data[i + n] = temp; } } else { for (int i = 0; i < m; i++) { temp = A.data[i]; A.data[i] = A.data[i + m]; A.data[i + m] = temp; } int gap = m - n; for (int i = n; i < A.len; i++) { A.data[i] = A.data[i + gap]; } } } };
main.cpp
#include"ArrrayTools.h" int main() { Array A(20); Array B(20); int a[] = { 1,2,3,4 }; int b[] = { 5,6 }; A.creat(a, 4); B.creat(b, 2); A.addArr(B); A.show(); ArrayTools::upside(A, 4, 2); A.show(); cout << "-------------------------------" << endl; Array C(20); Array D(20); C.creat(b, 2); D.creat(a, 4); C.addArr(D); C.show(); ArrayTools::upside(C,2,4); C.show(); return 0; }
以上是关于课后习题 2-9 前后两部分数组位置互换的主要内容,如果未能解决你的问题,请参考以下文章