//数组

# 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. Sender IP字段为"0.0.0.0"的ARP请求报文

    今天在研究免费ARP的过程中,抓到了一种Sender IP字段为“0.0.0.0”的ARP请求报文(广播),抓包截图如下: 这让我很疑惑.一个正常的ARP请求不应该只是Target MAC字段为全0吗 ...

  2. python学习--Django虚拟环境搭建

    一 . 为什么选择搭建虚拟环境 搭建一个只对本次项目有用的虚拟环境,而不影响主环境 二 . 安装前准备 #    1. 安装 python #    2. 安装virtualenvwrapper #  ...

  3. Hive-1.2.1_03_DDL操作

    Hive官方文档:Home-UserDocumentation Hive DDL官方文档:LanguageManual DDL 参考文章:Hive 用户指南 注意:各个语句的版本时间,有的是在 hiv ...

  4. hubilder打包+C#服务端个推服务实现

    关于推送鼓捣了好长时间,这里不再写helloworld了,只讲里面遇到的问题. 1.关于苹果开发者平台上的注册 网上很多的教程,只要按照步骤来设置就行了,在 iOS证书(.p12)和描述文件(.mob ...

  5. zk理解(转载自邬兴亮---www.cnblogs.com/wuxl360/p/5817471.html)

    一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调技术.那么什么是分布式协调技术?那么我来告诉大家,其实分布式协调技术 主要用来解决分布式环境当中多个进程之间的 ...

  6. sys.argv[]使用

    sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个"外部"很关键,所以那些试图从代码来说明它作用的解释一直没看明白.因为我们从外部取得的参数可以是多个,所以获得的是一 ...

  7. P1754 球迷购票问题

    题目背景 盛况空前的足球赛即将举行.球赛门票售票处排起了球迷购票长龙. 按售票处规定,每位购票者限购一张门票,且每张票售价为50元.在排成长龙的球迷中有N个人手持面值50元的钱币,另有N个人手持面值1 ...

  8. 淘宝可伸缩高性能互联网架构HSF(转)

    文章转自http://blog.csdn.net/hpf911/article/details/14165865 时间过得很快,来淘宝已经两个月了,在这两个月的时间里,自己也感受颇深.下面就结合淘宝目 ...

  9. Linux系统学习之文件管理

    Linux目录分布通常是树形,所以它的结构又称为目录树. 一.文件和目录管理 [root@Cfhost-170820-UCNK /]# cd / [root@Cfhost-170820-UCNK /] ...

  10. P1044-栈-洛谷luogu

    题目背景 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即poppop(从栈顶弹出一个元素)和pushpush(将一个元素进栈). 栈的重要性 ...