以下的程序只是在观看郝斌老师讲解的(C语言数据结构)之后自己做得简单练习。
传送门:郝斌-数据结构
# include <stdio.h>
# include <stdlib.h>
typedef struct MyArray{
int * pBase; //存放数组第一个元素的地址
int len; //数组长度
int cnt; //数组的有效长度
}* PARR;
void init(PARR, int);
bool append(PARR, int);
bool isEmpty(PARR);
bool isFull(PARR);
void showArray(PARR);
bool insert(PARR, int, int);
bool remove(PARR, int, int *);
int main(void)
{
PARR pArr;
init(pArr, 5);
showArray(pArr);
append(pArr, 1);
append(pArr, 2);
append(pArr, 3);
append(pArr, 4);
append(pArr, 5);
showArray(pArr);
insert(pArr,5,6);
showArray(pArr);
int x;
remove(pArr,4,&x);
showArray(pArr);
printf("%d\n", x);
insert(pArr,4,6);
showArray(pArr);
return 0;
}
/*
初始化数组
*/
void init(PARR pArr, int length)
{
pArr->pBase = (int *)malloc(sizeof(int)*length);
if (pArr->pBase==NULL){
printf("%s\n", "内存分配失败!");
exit(-1);
}else{
pArr->len = length;
pArr->cnt = 0;
}
}
void showArray(PARR pArr){
if (isEmpty(pArr))
printf("%s\n", "数组为空!");
else{
int i;
for (i=0;i<pArr->cnt;i++)
printf("%d ", pArr->pBase[i]);
printf("\n");
}
return;
}
bool isEmpty(PARR pArr){
if (pArr->cnt==0)
return true;
return false;
}
bool isFull(PARR pArr){
if (pArr->cnt==pArr->len)
return true;
return false;
}
bool append(PARR pArr, int val){
if (isFull(pArr)){
printf("%s\n", "数组已满!");
return false;
}else{
pArr->pBase[pArr->cnt] = val;
pArr->cnt++;
return true;
}
}
bool insert(PARR pArr, int index, int val){
if (isFull(pArr)){
printf("%s\n", "数组已满!");
return false;
}
if (index<0||index>pArr->cnt)
{
printf("%s\n", "数组下标越界!");
return false;
}
int i;
int temp;
for (i=pArr->cnt; i>index; i--){
temp = pArr->pBase[i-1];
pArr->pBase[i-1] = pArr->pBase[i];
pArr->pBase[i] = temp;
}
pArr->pBase[index] = val;
pArr->cnt++;
return true;
}
bool remove(PARR pArr, int index, int * pVal){
if (isEmpty(pArr)){
printf("%s\n", "数组已空!");
return false;
}
if (index<0||index>pArr->cnt-1){
printf("%s\n", "数组下标越界!");
return false;
}
int i;
int temp;
*pVal=pArr->pBase[index];
for(i=index; i<pArr->cnt; i++){
temp = pArr->pBase[i];
pArr->pBase[i] = pArr->pBase[i+1];
pArr->pBase[i+1] = temp;
}
pArr->cnt--;
return true;
}
只是实现了数组的一些简单功能,如有不妥的地方,烦请联系我。
email: 17126252@bjtu.edu.cn
版权声明:博客编写不易,转载时请注明出处,万分感谢 !
http://blog.csdn.net/zyy_2018/article/details/79722186