#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
//定義一個數據類型,該數據類型的名字叫做struct Arr 這個數據類型有三個成員
struct Arr
{
int* pBase; //存儲的是數組第一個元素的地址
int len; //數組所能容納的最大元素個數
int cnt; //當前數組有效元素的個數
};
int get();
bool isEmpty(struct Arr* pArray)
{
if (0 == pArray->cnt)
{
return true;
}
else
{
return false;
}
};
bool isFull(struct Arr* pArray)
{
if (pArray->cnt == pArray->len)
{
return true;
}
else
{
return false;
}
};
int main()
{
struct Arr arr;
int val;
initArr(&arr, 6);
showArr(&arr);
appendArr(&arr, 1);
appendArr(&arr, 10);
appendArr(&arr, -3);
appendArr(&arr, 6);
appendArr(&arr, 88);
appendArr(&arr, 11);
if (deleteArr(&arr, 4, &val))
{
printf("ɾ���ɹ�!\n");
printf("��ɾ����Ԫ����: %d\n", val);
}
else
{
printf("ɾ��ʧ��!\n");
}
showArr(&arr);
inversionArr(&arr);
printf("����֮�������������:\n");
showArr(&arr);
sortArr(&arr);
showArr(&arr);
//printf("%d\n", arr.len);
return 0;
}
void initArr(struct Arr* pArray, int length)//初始化結構體
{
pArray->pBase = (int*)malloc(sizeof(int) * length);//給數組的第一個元素分配內存
if (NULL == pArray->pBase)
{
printf("shibai");
exit(-1);//終止
}
else
{
pArray->len = length;
pArray->cnt = 0;
}
return;
}
void showArr(struct Arr* pArray)
{
if (isEmpty(pArray))
{
printf("kogn");
}
else
{
for (int i = 0; i <= pArray->cnt - 1; i++)
{
printf("%d ", pArray->pBase[i]);
}
printf("\n");
}
};
bool appendArr(struct Arr* pArray, int val)
{
if (isFull(pArray))
{
return false;
}
else
{
pArray->pBase[pArray->cnt] = val;//這裏要注意,第一個索引是0,cnt表示有效數據個數
(pArray->cnt)++;
}
return true;
};
bool insertArr(struct Arr* pArray, int pos, int val)
{
if (isFull(pArray))
{
return false;
}
if (pos<1 || pos>pArray->cnt + 1)//第一個元素,但是索引是pos-1
{
return false;
}
for (int i = pArray->cnt - 1; i >= pos - 1; i--)
{
pArray->pBase[i + 1] = pArray->pBase[i];
}
pArray->pBase[pos - 1] = val;
pArray->cnt++;
return true;
};
bool deleteArr(struct Arr* pArray, int pos, int* pVal)
{
if (pos<1 || pos>pArray->cnt)
{
return false;
}
if (isEmpty(pArray))
{
return false;
}
*pVal = pArray->pBase[pos - 1];//不知道爲什麼要這麼幹
//下面這部分開始的時候寫錯了,還是要仔細分析一下
for (int i = pos; i <= pArray->cnt; i++)
{
pArray->pBase[i - 1] = pArray->pBase[i];
}
pArray->cnt--;
return true;
};
void sortArr(struct Arr* pArray)
{
//冒泡
};
void inversionArr(struct Arr* pArray)
{
int i = 0;
int j = pArray->cnt - 1;
int temp;
while (i < j)
{
temp = pArray->pBase[i];
pArray->pBase[i] = pArray->pBase[j];
pArray->pBase[j] = temp;
i++;
j--;
}
};
確定一個數組,需要三個有效參數
1.* pBase 首元素地址
2.len 總數組長度
3.cnt 有效數據長度