数据结构  12 连续存储数组的算法演示

来源:互联网 发布:淘宝卖家骂人扣几分 编辑:程序博客网 时间:2024/06/05 22:59

别人的代码按照自己的理解加了备注,如有错误望各位da大牛指正 

#include<stdio.h>  
#include<malloc.h>  
#include<stdlib.h>  
#include<stdbool.h>  
  
struct Arr   //定义了一个数据类型,该数据类型名字叫struct Arr  
{  
    int *pBase;//存储的是数组第一个元素的地址  
    int len;   //数组所能容纳的最大元素的个数  
    int cnt;   //当前数组有效元素的个数  
};  
  
void init_arr(struct Arr *pArr,int len); //初始化  
bool append_arr();//追加  
bool insert_arr();//插入  
bool delete_arr();//删除  
int  get();  
bool is_empty(struct Arr *pArr);  
bool is_full();  
void sort_arr();  
void show_arr(struct Arr *pArr);  
void inversion_arr();  
  
int main(void)  
{  
    struct Arr arr;  //定义了一个struct Arr数据类型 类型名是arr 
    init_arr(&arr,6);  //传了arr的地址, 
    show_arr(&arr);  
    return 0;  
}  
  
void init_arr(struct Arr * pArr,int len)  
{  
    pArr->pBase = (int *)malloc(sizeof(struct Arr) * len);  //动态分配内存 如果内存不足会返回一个NULL 
    if(pArr->pBase == NULL)  //指针 最终指向的是arr里的pBase 
    {  
        printf("动态内存分配失败!\n");  
        exit(-1);//终止整个程序  
    }  
    else  
    {  
        (*pArr).len = len;  //另一种指向方法,把参数的len给结构体的len成员 
        pArr->cnt = 0;  //给结构体的cnt赋值 
    }  
    return;  
}  
  
void show_arr(struct Arr *pArr)  
{  
    int i = 0;  
    if(is_empty(pArr))  //判断是否空的 这个参数没有加&(地址) 所以传的是值 
    {  
        printf("该数组为空\n");  
    }  
    else  
    {  
        for(i=0; i<pArr->cnt; i++)  //输出cnt里的个数 
        {  
            printf("%d    ",pArr->pBase[i]);  //指针只存首地址  
        }  
        printf("\n");  
    }  
}  
  
bool is_empty(struct Arr *pArr)  //判断是否是空的函数 
{  
    if(pArr->cnt == 0)  
    {  
        return true;  
    }  
    else  
    {  
        return false;  
    }  
}  

0 0
原创粉丝点击