//数组

# include <stdio.h>
# include <malloc.h> //包含了 malloc 函数
# include <stdlib.h> //包含了 exit 函数 struct Arr //定义了一个叫struct Arr 的数据类型没有定义变量
{
int * pBase; //存储的是数组第一个元素的地址
int len; //数组能容纳的元素的个数
int cnt; //当前数组的有效的元素的个数
}; void init_arr(struct Arr * pArr, int length); //初始化
bool append_arr(struct Arr *pArr, int val); //追加
bool insert_arr(struct Arr *pArr, int pos, int val); //插入
bool delete_arr(struct Arr *pArr, int pos, int * pval); //删除
int get(); //获得
bool is_empty(struct Arr *pArr); //判断是否为空
bool is_full(struct Arr *pArr); //判断是否满
void sort_arr(struct Arr *pArr); //排序
void show_arr(struct Arr *pArr); //输出
void inverson_arr(struct Arr *pArr); //倒置 int main(void)
{
struct Arr arr;
int val; init_arr(&arr, );
show_arr(&arr);
append_arr(&arr, );
append_arr(&arr, );
append_arr(&arr, -);
append_arr(&arr, );
append_arr(&arr, );
append_arr(&arr, ); if( delete_arr(&ar, , &val) )
{
printf("删除成功!\n");
printf("您删除的元素是:%d\n", val);
}
else
{
printf("删除失败!\n");
} /*
append_arr(&arr, 2);
append_arr(&arr, 3);
append_arr(&arr, 4);
append_arr(&arr, 5);
insert_arr(&arr, 6, 99); append_arr(&arr, 6);
append_arr(&arr, 7);
if ( append_arr(&arr, 8) )
{
printf("追加成功\n");
}
else
{
printf("追加失败!\n");
}
*/ show_arr(&arr);
inverson_arr(&arr);
printf("倒置之后的内容是:\n");
show_arr(&arr);
sort_arr(&arr);
printf("排序之后的结果是:\n");
show_arr(&arr); //printf("%d\n", arr_len); return ;
} void init_arr(struct Arr * pArr, int length) //初始化
{
pArr->pBase = (int *)malloc(sizeof(int) * length);
if (NULL == pArr->pBase)
{
printf("动态内存分配失败!\n");
exit(-); //表示的是终止整个程序
}
else
{
pArr->len = length;
pArr->cnt = ;
} return ;
} bool is_empty(truct Arr *pArr); //判断是否为空
{
if ( == pArr->cnt)
return true;
else
return false;
} bool is_full(struct Arr *pArr); //判断是否满
{
if (pArr->cnt == pArr->len)
return turn;
else
return false;
} void show_arr(struct Arr *pArr) //输出
{
if ( is-empty(pArr) )
{
printf("数组为空!\n");
}
else
{
for (int i=; i<pArr->cnt; ++i)
prinf("%d ", pArr->pBase[i]); //int *
printf("\n");
}
} bool append_arr(struct Arr *pArr, int val); //追加
{
//满时返回 false
if ( is_full(pArr) )
return false; //不满时追加
pArr->pBase[pArr->cnt] = var;
(pArr->cnt)++; return true;
} bool insert_arr(struct Arr *pArr, int pos, int val); //插入
{
int i; if ( is_full(pArr) )
return false; if (pos< || pos>pArr->cnt+)
return false; for (i=pArr->cnt-; i>=pos-; --i)
{
pArr->pBase[i+i] = pArr->pBase[i];
}
pArr->pBase[pos-] = val;
pArr->cnt++ return true;
} bool delete_arr(struct Arr *pArr, int pos, int * pVal); //删除
{
if ( is-empty(pArr) )
return false;
if (pos< || pos>pArr->cnt)
return false; *pVal = pArr->pBase[pos-]
for (i=pos; i<pArr->cnt; ++i)
{
pArr->pBase[i-] = pArr->pBase[i];
}
pArr->cnt--; return true;
} void inverson_arr(struct Arr *pArr); //倒置
{
int i = ;
int j = pArr->cnt-; while(i < j)
{
t = pArr->pBase[i];
pArr->pBase[i] = pArr->pBase[j];
pArr->pBase[j] = t;
++i;
--j;
} return;
} void sort_arr(struct Arr *pArr); //排序
{
int i, j, t; for (i=; i<pArr->cnt; ++i)
{
for (j=i+; j<pArr->cnt; ++j)
{
if (pArr->pBase[i] > pArr->pBase[j])
{
t = pArr->pBase[i];
pArr->pBase[i] = pArr->pBase[j];
pArr->pBase[j] = t;
}
}
}
}

C_数据结构_数组的更多相关文章

  1. C_数据结构_数组的修改和删除

    #include<stdio.h> typedef struct Node { int a,b; }node; node c[]; int n; void print() { int i; ...

  2. c_数据结构_图_邻接表

    课程设计------邻接表 图的遍历实现课程设计:https://files.cnblogs.com/files/Vera-y/图的遍历_课程设计.zip #include<stdio.h> ...

  3. c_数据结构_哈希表

    #include <stdio.h> #include <stdlib.h> #include <string.h> #define ERROR 0 #define ...

  4. c_ 数据结构_图_邻接矩阵

    程序主要实现了图的深度遍历和广度遍历. #include <stdio.h> #include <stdlib.h> #include <string.h> #de ...

  5. C_数据结构_链表的链式实现

    传统的链表不能实现数据和链表的分离,一旦数据改变则链表就不能用了,就要重新开发. 如上说示:外层是Teacher,里面小的是node. #ifndef _MYLINKLIST_H_ #define _ ...

  6. c_数据结构_队的实现

    # 链式存储#include<stdio.h> #include<stdlib.h> #define STACK_INIT_SIZE 100//存储空间初始分配量 #defin ...

  7. c_数据结构_栈的实现

    #include<stdio.h> #include<stdlib.h> #define STACK_INIT_SIZE 100 #define STACKINCREMENT ...

  8. c_数据结构_链表

    #include<stdio.h> #include<stdlib.h> #define ERROR 0 #define OK 1 #define OVERFLOW -2 ty ...

  9. c_数据结构_顺序表

    #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define LIST_INIT_SIZE 100 // 线性表存储空间的初始分配量 #define ...

随机推荐

  1. SQL SERVER孤立帐号的处理

    Step1:查询 Use KSHR_F23 Go exec sp_change_users_login @Action='Report' Go Step2:处理 Use KSHR_F23 Go exe ...

  2. NFS常见问题

    问题一:取消挂载失败 问题现象: umount /opt/data umount.nfs: /opt/data: device is busy umount.nfs: /opt/data: devic ...

  3. 房企大裁员;争议贺建奎;破产阴影下的ofo:4星|《财经》第29期

    <财经>2018年第29期 总第546期 旬刊 高水平的财经杂志.本期重要话题有:1:房企大裁员;2:争议贺建奎;3:破产阴影下的ofo; 总体评价4星,非常好. 以下是书中一些内容的摘抄 ...

  4. ZooKeeper学习总结 第二篇:ZooKeeper深入探讨

    其实zookeeper系列的学习总结很早就写完了,这段时间在准备找工作的事情,就一直没有更新了.下边给大家送上,文中如有不恰当的地方,欢迎给予指证,不胜感谢!. 1. 数据模型 1.1. 只适合存储小 ...

  5. 全栈JavaScript之路( 二十二 )IE 专有扩展——文档模式

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/hatmore/article/details/37611911 ie8 引入了一个新的概念.&quo ...

  6. centos7下安装docker(9容器对资源的使用限制-内存)

                  一个docker Host上面会运行若干容器,每个容器都需要CPU,内存和IO资源.容器提供了控制分配多少CPU,内存给每个容器的机制,避免摸个容器因占用太多资源而影响其他 ...

  7. 1407: [Noi2002]Savage

    其实答案远不到1e6 所以可以枚举! 设答案是m 那\(i,j\)的相遇就可以表示成\(P_ix+C_i=P_jx+C_j+ym\) 移向就是\((P_i-P_j)x-ym=C_j-C_i\) 套扩展 ...

  8. PHP实现DES加密,解决乱码

    PHP要实现DES加密,大体上有2个思路.一是用扩展,一是原生PHP实现. 这里推荐一个PHP原生实现的加密,是thinkphp的一个类库: https://github.com/top-think/ ...

  9. PHP的运行机制与原理(底层)

    原文:http://www.jb51.net/article/74907.htm 说到php的运行机制还要先给大家介绍php的模块,PHP总共有三个模块:内核.Zend引擎.以及扩展层:PHP内核用来 ...

  10. M100 (1) 运行

    软件环境设置指南 本指南详细介绍了使用Onboard SDK所需的软件环境. https://developer.dji.com/onboard-sdk/documentation/developme ...