C_数据结构_数组
//数组 # 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_数据结构_数组的更多相关文章
- C_数据结构_数组的修改和删除
#include<stdio.h> typedef struct Node { int a,b; }node; node c[]; int n; void print() { int i; ...
- c_数据结构_图_邻接表
课程设计------邻接表 图的遍历实现课程设计:https://files.cnblogs.com/files/Vera-y/图的遍历_课程设计.zip #include<stdio.h> ...
- c_数据结构_哈希表
#include <stdio.h> #include <stdlib.h> #include <string.h> #define ERROR 0 #define ...
- c_ 数据结构_图_邻接矩阵
程序主要实现了图的深度遍历和广度遍历. #include <stdio.h> #include <stdlib.h> #include <string.h> #de ...
- C_数据结构_链表的链式实现
传统的链表不能实现数据和链表的分离,一旦数据改变则链表就不能用了,就要重新开发. 如上说示:外层是Teacher,里面小的是node. #ifndef _MYLINKLIST_H_ #define _ ...
- c_数据结构_队的实现
# 链式存储#include<stdio.h> #include<stdlib.h> #define STACK_INIT_SIZE 100//存储空间初始分配量 #defin ...
- c_数据结构_栈的实现
#include<stdio.h> #include<stdlib.h> #define STACK_INIT_SIZE 100 #define STACKINCREMENT ...
- c_数据结构_链表
#include<stdio.h> #include<stdlib.h> #define ERROR 0 #define OK 1 #define OVERFLOW -2 ty ...
- c_数据结构_顺序表
#define OK 1 #define ERROR 0 #define OVERFLOW -2 #define LIST_INIT_SIZE 100 // 线性表存储空间的初始分配量 #define ...
随机推荐
- 什么是Docker?
概观 Docker是推动集装箱运动的公司,也是唯一一家能够解决混合云中的每个应用的集装箱平台提供商.当今的企业面临数字化转型的压力,但受到现有应用程序和基础架构的制约,同时合理化日益多样化的云,数 ...
- January 25th, 2018 Week 04th Thursday
What made something precious? Losing it and finding it. 一件东西怎样才会变得珍贵无比?先弄丢了它,然后又找到了. A short time ag ...
- Lua 基础之Weak Table(5)
Lua垃圾收集策略 Lua自动进行内存的管理.程序只能创建对象,而没有执行删除对象的函数.通过使用垃圾收集技术,Lua会自动删除那些失效的对象,也就是引用为0 的对象.但是呢?有些对象,引用没有指向它 ...
- iOS时间显示今天昨天
一.前言 今天无意间想起写这个功能,仔细考虑了一下,其实很简单,整体思路如下: 先获取你所要转换的时间的年月日,然后再获取今天和昨天的年月日,然后对比,进而返回不同的字符串. 二.实现步骤 首先,我们 ...
- 关于C语言学习的一些感想(初学者)
C语言是一门通用计算机编程语言,广泛应用于底层开发.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言. 尽管C语言提供了许多低 ...
- 建立标准编码规则(一)-自定义C#代码分析器
1.下载Roslyn的Visual Studio分析器模板插件(VS2015 或VS2017) https://marketplace.visualstudio.com/items?itemName= ...
- spring IOC中三种依赖注入方式
Spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则,用来消减计算机程序之间的耦合问题,控制反转一般分为两种类型,依赖注入和依赖查找,依赖什么?为什么需要依赖?注入 ...
- swift class的虚函数表
class NSObjectBase: NSObject { func Msg_Normal(){ } func Msg_Second(){} func Msg_Third(){} @objc fun ...
- [TJOI2018]教科书般的亵渎
嘟嘟嘟 题面挺迷的,拿第一个样例说一下: 放第一次亵渎,对答案产生了\(\sum_{i = 1} ^ {10} i ^ {m + 1} - 5 ^ {m + 1}\)的贡献,第二次亵渎产生了\(\su ...
- 1346:【例4-7】亲戚(relation)
并查集的模板题: #include<iostream> #include<cstdio> using namespace std; ; int fa[maxn]; int fi ...