标签:
#include <stdio.h>
#include <stdlib.h>
struct Arr {
int *p_base;
int len;
int cnt;
};
void init_arr(Arr * pArr, int length);
void sort_arr(Arr *pArr);
void show_arr(Arr *pArr);
void reverse_arr(Arr *pArr);
bool append_arr(Arr * pArr,int val);
bool insert_arr(Arr * pArr,int pos, int val);
bool delete_arr(Arr * pArr, int pos,int *pVal);
bool is_empty(Arr *pArr);
bool is_full(Arr *pArr);
int get(int pos);
void move_back(Arr *pArr,int ii) {
for (int i = pArr->cnt;i > ii;i--) {
pArr->p_base[i] = pArr->p_base[i-1];
}
}
void move_forward(Arr *pArr, int ii) {
for (int i = ii;i < pArr->cnt-1;i++) {
pArr->p_base[i] = pArr->p_base[i+1];
}
}
void swap(int *ii, int *jj) {
int temp;
temp = *ii;
*ii = *jj;
*jj = temp;
}
int main() {
Arr arr;
init_arr(&arr, 6);
show_arr(&arr);
append_arr(&arr, 1);
append_arr(&arr, 2);
append_arr(&arr, 3);
append_arr(&arr, 4);
append_arr(&arr, 5);
insert_arr(&arr, 1, 99);
insert_arr(&arr, 1, 96);
//append_arr(&arr, 6);
//append_arr(&arr, 7);
int val;
show_arr(&arr);
delete_arr(&arr, 5, &val);
printf("删除 %d\n", val);
show_arr(&arr);
reverse_arr(&arr);
show_arr(&arr);
sort_arr(&arr);
show_arr(&arr);
}
void init_arr(Arr * pArr,int length) {
pArr->p_base = (int *)malloc(sizeof(int)*length);
if (NULL == pArr->p_base) {
printf("动态内存分配失败");
exit(-1);
}
else
{
pArr->len = length;
pArr->cnt = 0;
}
return;
}
void show_arr(Arr *pArr) {
if (is_empty(pArr) ){
printf("数组为空!\n");
}
else
{
for (int i = 0;i < pArr->cnt;i++) {
printf("%d ", pArr->p_base[i]);
}
printf("\n");
}
}
bool is_empty(Arr *pArr) {
if (pArr->cnt == 0) {
return true;
}
else {
return false;
}
}
bool is_full(Arr *pArr) {
if (pArr->cnt == pArr->len) {
return true;
}
else {
return false;
}
}
bool append_arr(Arr * pArr, int val) {
if (is_full(pArr)) {
return false;
}
else {
pArr->p_base[pArr->cnt] = val;
pArr->cnt++;
return true;
}
}
bool insert_arr(Arr * pArr, int pos, int val) {
if (is_full(pArr)) {
return false;
}
if (pos<0 || pos>pArr->cnt) {
return false;
}
move_back(pArr, pos);
pArr->p_base[pos] = val;
pArr->cnt++;
return true;
}
bool delete_arr(Arr * pArr, int pos, int *pVal) {
if (is_empty(pArr)) {
return false;
}
if (pos<0 || pos>pArr->cnt) {
return false;
}
*pVal = pArr->p_base[pos];
move_forward(pArr, pos);
pArr->cnt--;
return true;
}
void reverse_arr(Arr *pArr) {
int i = 0;
int j = pArr->cnt-1;
while (i < j) {
swap(&(pArr->p_base[i]), &(pArr->p_base[j]));
i++;
j--;
}
return;
}
void sort_arr(Arr *pArr) {
int i, j, temp;
for (i = 0;i < pArr->cnt;i++) {
for (j = i + 1;j < pArr->cnt;j++) {
if (pArr->p_base[i] > pArr->p_base[j]) {
swap(&(pArr->p_base[i]), &(pArr->p_base[j]));
}
}
}
}
数组设计
标签:
原文地址:http://www.cnblogs.com/pascal-poincare/p/5402385.html