1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| /** * @brief 向滑动窗口的头部或尾部插入数据。 * @param arr 滑动窗口数据。 * @param size 滑动窗口大小。 * @param newElement 新增元素。 * @param is_insert_end 是否插入到末尾。 */ static void shiftArray(t_app_sms_info arr[], uint32_t size, t_app_sms_info newElement, bool is_insert_end) { jx_log("is_insert_end:%d.", is_insert_end); jx_log("Original array:"); for (uint32_t i = 0; i < size; i++) { jx_log("index:%d, number:%s, time:%s.", i, arr[i].number, arr[i].time); jx_log("offset_index:%d, state:%d.", arr[i].offset_index, arr[i].state); jx_log("data:%s.", arr[i].data); }
if (is_insert_end) { // 向后移动数组中的结构体元素 for (uint32_t i = 0; i < size - 1; i++) { arr[i] = arr[i + 1]; // 浅复制。 } // 在数组的最后一个位置上插入新结构体元素 arr[size - 1] = newElement; } else { // 向前移动数组中的结构体元素 for (uint32_t i = size - 1; i > 0; i--) { arr[i] = arr[i - 1]; } // 在数组的最后一个位置上插入新结构体元素 arr[0] = newElement; }
jx_log("Moved array:"); for (uint32_t i = 0; i < size; i++) { jx_log("index:%d, number:%s, time:%s.", i, arr[i].number, arr[i].time); jx_log("offset_index:%d, state:%d.", arr[i].offset_index, arr[i].state); jx_log("data:%s.", arr[i].data); } }
|