#include <stdio.h>
#include <stdlib.h>
typedef struct Arr{
int *pArray; //存放一个指向数组的指针
int cent; //存放当前数组中有效的个数
int len; //存放数组的长度.
}Array,*Parr;
void initArray(Parr,int); //对数组进行初始化
int append(Parr,int); //对数组进行附加元素
int insertArray(Parr,int,int); //插入元素
int IS_full(Parr); //判断数组是否已满
void traverseArray(Array); //对数组进行遍历
int IS_empty(Array); //判断数组是否为空
void deleteArray(Parr,int); //对数组中某个元素进行删除
void inversionArray(Array); //对数组中元素进行倒置
void sortArray(Array); //对数组中的元素进行排序
int main(int argc, const char * argv[])
{
Array arr;
initArray(&arr,10);
append(&arr,1);
append(&arr,8);
append(&arr,3);
append(&arr,7);
append(&arr,9);
append(&arr,6);
append(&arr,35);
append(&arr,4);
append(&arr,38);
insertArray(&arr,5,10);//在第X个元素的位置插入元素10;
deleteArray(&arr,7);//删除第四个元素
sortArray(arr);
traverseArray(arr);
inversionArray(arr);
traverseArray(arr);
return 0;
}
//对数组进行初始化.
void initArray(Parr parr,int length){
parr->pArray = (int*)malloc(length*sizeof(int));
if (NULL == parr->pArray) {
printf("动态分配内存失败!");
}
else{
parr->len = length;
parr->cent = 0;
}
return;
}
//对数组元素进行添加
int append(Parr parr,int var){
if (parr->cent == parr->len) {
printf("附加失败!");
return 0;
}
else{
parr->pArray[parr->cent] = var;
parr->cent++;
return 1;
}
}
//在数组中得某个位置,进行插入元素
int insertArray(Parr parr,int index,int var){
int i;
if(0 == IS_full(parr))
return 0;
if (index > parr->cent || index<1) {
printf("插入元素的位置输入有误!");
return 0;
}
for (i = parr->cent; i>=index; --i) {
parr->pArray[i] = parr->pArray[i-1];
}
parr->pArray[index-1] = var;
parr->cent++;
return 0;
}
//判断数组是否已满
int IS_full(Parr parr){
if (parr->cent == parr->len) {
printf("数组已满!");
return 0;
}
else
return 1;
}
//对数组中得各元素进行遍历
void traverseArray(Array arr){
if(0 ==IS_empty(arr))
printf("数组为空!");
else{
for (int i = 0; i<arr.cent; ++i) {
printf("%d ",arr.pArray[i]);
}
printf("\n");
}
}
//判断数组是否为空
int IS_empty(Array arr){
if (0 == arr.cent) {
printf("该数组为空");
return 0;
}
else
return 1;
}
//删除数组中某个位置的元素
void deleteArray(Parr parr,int index){
if(0 ==IS_empty(*parr))
printf("数组为空!");
else{
int i;
int value = parr->pArray[index-1];
for (i = index-1; i<parr->cent; ++i) {
parr->pArray[i] = parr->pArray[i+1];
}
parr->cent--;
printf("删除第%d个元素,值为%d\n",index,value);
}
}
//对数组中得元素进行倒置
void inversionArray(Array arr){
int i = 0;
int j = arr.cent-1;
int temp = 0;
while (i<j) {
temp = arr.pArray[i];
arr.pArray[i] = arr.pArray[j];
arr.pArray[j] = temp;
--j;
++i;
}
}
//对数组中得元素进行排序
void sortArray(Array arr){
int i,j,t;
for (i = 0; i<arr.cent; ++i) {
for (j = 0; j<arr.cent-i-1; ++j) {
if (arr.pArray[j] > arr.pArray[j+1]) {
t = arr.pArray[j+1];
arr.pArray[j+1] = arr.pArray[j];
arr.pArray[j] = t;
}
}
}
}
结构体,指向数组指针,对数组的增删,排序,遍历算法
最新推荐文章于 2024-03-02 23:02:10 发布