//数组

# 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. Centos7下crontab+shell脚本定期自动删除文件

    问题描述: 最近有个需求,就是rsync每次同步的数据量很多,但是需要保留的数据库bak文件 保留7天就够了,所以需要自动清理文件夹内的bak文件 解决方案: 利用shell脚本来定期删除文件夹内的任 ...

  2. MATLAB数值分析实验

    1.用Newton迭代法求方程   的第一个正根. 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ newton.m: function x1=newto ...

  3. ajax json 表格排序,分页,自己定义每页数量

    ajax json 表格排序.分页,自己定义每页数量  点击表头能够排序.依照升序或者降序,另外支持多列排序 设置每页数量 演示   XML/HTML Code <table id='examp ...

  4. 用PHP的curl实现并发请求远程文件(并发抓取远程网页)

    PHP的curl功能确实强大了.里面有个curl_multi_init功能,就是批量处理任务.可以利用此,实现多进程同步抓取多条记录,优化普通的网页抓取程序. 一个简单的抓取函数: function ...

  5. CSS3渐变——径向渐变

    上节在<再说CSS3渐变——线性渐变>和大家一起学习了CSS3 Gradient中径向渐变最新语法(称得上是W3C的标准语法)相关知识以及其基本使用.今天我们在这一篇中主要和大家一起来了解 ...

  6. PHP批量抓取远程网页图片并存到本地实现方法和源码

    做为一个仿站工作者,当遇到网站有版权时甚至加密的时候,WEBZIP也熄火,怎么扣取网页上的图片和背景图片呢.有时候,可能会想到用火狐,这款浏览器好像一个强大的BUG,文章有版权,屏蔽右键,火狐丝毫也不 ...

  7. ECharts.js学习动态数据绑定

    https://my.oschina.net/brillantzhao/blog/1541702https://www.cnblogs.com/leoxuan/p/6513591.htmlhttps: ...

  8. go标准库的学习-reflect

    参考: https://studygolang.com/pkgdoc http://c.biancheng.net/golang/concurrent/ 导入方式: import "refl ...

  9. mysql数据类型介绍(含text,longtext,mediumtext说明)

    转自http://m.blog.csdn.net/sipsir/article/details/12343581 转载,文章原连接已经失效,百度快照找到的. MySQL支持大量的列类型,它可以被分为3 ...

  10. Web 前端怎样入门?(转)

    转自知乎https://www.zhihu.com/question/32314049/answer/100898227