08 Basic concepts of linear tables
If the modification results of parameters need to be "brought back", use reference type parameters.
Definition of sequence table:
Sequential storage, chain storage
sizeof(int)、sizeof(MyStruct)
Extension of sequence table
Although the size changes, it takes a lot of time
Make the code robust: Check the legality of data operations, such as length and whether the element position is out of bounds, and then give feedback
The time complexity is O(n)
topic:
Answer:ACBD
Big topic: P18
Question 10
//10、移位数组
void Reverse(int R[], int from, int to) {
for (int i = from; i <= (from + to) / 2; i++) {
swap(R[from++], R[to--]);
}
}
void Converse(int R[], int n, int p) {
Reverse(R, 0, p - 1);
Reverse(R, p, n - 1);
Reverse(R, 0, n - 1);
}
void printArr(int arr[], int n) {
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
}
int main() {
int arr1[] = { 0,1,2,3,4,5,6 };
int arr2[] = { 0,1,2,3,4,5,6,7 };
int len1 = sizeof(arr1) / sizeof(int);
int len2 = sizeof(arr2) / sizeof(int);
printArr(arr1, len1);
cout << endl;
Converse(arr1, len1, 3);
printArr(arr1, len1);
}
Question 13
#include<iostream>
using namespace std;
#pragma warning(disable:4996)
void printArr(int arr[], int n) {
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
}
int findMinNotExist(int arr[], int n) {
int minNum = 0;
bool* flagArr = (bool*)malloc(sizeof(bool) * n);
for (int i = 0; i < n; i++)
flagArr[i] = false;
for (int j = 0; j < n; j++) {
if (arr[j] > 0 && arr[j] <= n) {
flagArr[arr[j] - 1] = true;
}
}
for (int k = 0; k < n; k++) {
if (flagArr[k] == false) {
free(flagArr);
flagArr = NULL;
minNum = k+1;
return minNum;
}
}
free(flagArr);
flagArr = NULL;
return minNum + 1;
}
int main() {
int arr1[] = { 0,1,2,6 };
int arr2[] = { 0,1,2,3,4,5,6,7 };
int len1 = sizeof(arr1) / sizeof(int);
int len2 = sizeof(arr2) / sizeof(int);
int min1=findMinNotExist(arr1, len1);
int min2 = findMinNotExist(arr2, len2);
}