#include <stdio.h>#include <stdlib.h>#include <string.h>struct array {int size;int used;int *arr;};void dump(struct array *array){int idx;for (idx = 0; idx < array->used; idx++)printf("[%02d]: %08d\n", idx, array->arr[idx]);}void alloc(struct array *array){array->arr = (int *)malloc(array->size * sizeof(int));}int insert(struct array *array, int elem){int idx;if (array->used >= array->size)return -1;for (idx = 0; idx < array->used; idx++) {if (array->arr[idx] > elem)break;}if (idx < array->used)memmove(&array->arr[idx+1], &array->arr[idx],(array->used - idx) * sizeof(int));array->arr[idx] = elem;array->used++;return idx;}int delete(struct array *array, int idx){if (idx < 0 || idx >= array->used)return -1;memmove(&array->arr[idx], &array->arr[idx+1],(array->used - idx - 1) * sizeof(int));array->used--;return 0;}int search(struct array *array, int elem){int idx;for (idx = 0; idx < array->used; idx++) {if (array->arr[idx] == elem)return idx;if (array->arr[idx] > elem)return -1;}return -1;}int main(){int idx;struct array ten_int = {10, 0, NULL};alloc(&ten_int);if (!ten_int.arr)return -1;insert(&ten_int, 1);insert(&ten_int, 3);insert(&ten_int, 2);printf("=== insert 1, 3, 2\n");dump(&ten_int);idx = search(&ten_int, 2);printf("2 is at position %d\n", idx);idx = search(&ten_int, 9);printf("9 is at position %d\n", idx);printf("=== delete [6] element \n");delete(&ten_int, 6);dump(&ten_int);printf("=== delete [0] element \n");delete(&ten_int, 0);dump(&ten_int);return 0;}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。