C/C++顺序数据结构——动态数组测试
这是一篇顺序表数据结构——动态数组的测试,
实现
//初始化数组
//插入
//根据位置删除
//根据值删除
//查找
//打印
//释放动态数组的内存
//清空数组
//获得动态数组容量
//获得动态数组当前元素个数
//根据位置获得某个位置的元素
话不多说 上代码!!!
//DynamicArray.h
#pragma once
#ifndef DynamicArray typedef struct DynamicArray
{
int size;//当前数组有多少个元素
int capacity; //数组的容量
int *pArray; //数据存放的地址
}DynamicArray; //初始化数组
DynamicArray *Init_Array(); //插入
void Add_Array(DynamicArray *arr, int value); //根据位置删除
void Delete_BY_ArrayPosition(DynamicArray *arr, int pos); //根据值删除
void Delete_BY_ArrayValude(DynamicArray *arr, int value); //查找
int Select_Array(DynamicArray *arr, int value); //打印
int Print_Array(DynamicArray *arr); //释放动态数组的内存
void Free_Array_space(DynamicArray *arr); //清空数组
void Clear_Array(DynamicArray *arr); //获得动态数组容量
int Get_Array_Capacity(DynamicArray *arr); //获得动态数组当前元素个数
int Get_Number_Of_DynamicArray(DynamicArray *arr); //根据位置获得某个位置的元素
int Get_Element_Of_DynamicArray(DynamicArray *arr, int pos); #endif // !DynamicArray
#include"DynamicArray.h"
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*typedef struct DynamicArray
{
int size;//当前数组有多少个元素
int capacity; //数组的容量
int *pArray; //数据存放的地址
}DynamicArray;*/
//初始化动态数组
DynamicArray *Init_Array()
{
//申请内存
DynamicArray *pAddr = (DynamicArray *)malloc(sizeof(DynamicArray));
pAddr->capacity = ;
pAddr->size = ;
pAddr->pArray = (int *)malloc(pAddr->capacity * sizeof(int));
return pAddr;
}
//插入
void Add_Array(DynamicArray *arr, int value)
{
if (arr == NULL)
{
printf("arr == NULL");
return;
}
//判断空间是否足够
//if (arr->size > arr->capacity)
if (arr->size == arr->capacity)
{
//开辟一个更大的空间
int *newspace = (int *)malloc((arr->capacity * ) * sizeof(int));
//把旧空间的数组内容拷贝到新空间
memcpy(newspace, arr->pArray, arr->capacity*sizeof(int));
//释放旧空间
free(arr->pArray);
arr->pArray = newspace;
//更新capacity
arr->capacity = arr->capacity * ;
}
//插入新元素
arr->pArray[arr->size] = value;
arr->size++;
}
//根据位置删除
void Delete_BY_ArrayPosition(DynamicArray *arr, int pos)
{
if (arr == NULL)
{
printf("arr == NULL");
return;
}
if (pos < || pos > arr->size)
{
printf("pos < 0 || pos > arr->size");
return;
}
for (int i=pos ; i <= arr->size-; i++)
{
arr->pArray[i-] = arr->pArray[i];
}
arr->size--;
}
//根据值删除
void Delete_BY_ArrayValude(DynamicArray *arr, int value)
{
if (arr == NULL)
{
printf("arr == NULL");
return;
}
int i,pos;
for (i = ; i < arr->size; i++)
{
if (arr->pArray[i] == value)
{
pos = i;
break;
}
}
Delete_BY_ArrayPosition(arr,pos+);
}
//查找,返回元素的位置
int Select_Array(DynamicArray *arr, int value)
{
if (arr == NULL)
{
printf("arr == NULL");
return -;
}
int i, pos;
for (i = ; i < arr->size; i++)
{
if (arr->pArray[i] == value)
{
pos = i;
break;
}
}
return pos;
}
//打印
int Print_Array(DynamicArray *arr)
{
if (arr == NULL)
{
printf("arr == NULL");
return -;
}
for (int i = ; i < arr->size; i++)
{
printf("%d ", arr->pArray[i]);
}
printf("\n");
return ;
}
//释放动态数组的内存
void Free_Array_space(DynamicArray *arr)
{
if (arr == NULL)
{
printf("arr == NULL");
return;
}
if (arr->pArray != NULL)
{
free(arr->pArray); }
free(arr); }
//清空数组的个数统计size
void Clear_Array(DynamicArray *arr)
{
if (arr == NULL)
{
printf("arr == NULL");
return;
}
arr->size = ;
}
//获得动态数组容量
int Get_Array_Capacity(DynamicArray *arr)
{
if (arr == NULL)
{
printf("Get_Array_Capacity error");
return -;
}
return arr->capacity;
}
//获得动态数组当前元素个数
int Get_Number_Of_DynamicArray(DynamicArray *arr)
{
if (arr == NULL)
{
printf("Get_Number_Of_DynamicArray error");
return -;
}
return arr->size;
}
//根据位置获得某个位置的元素
int Get_Element_Of_DynamicArray(DynamicArray *arr,int pos)
{
if (arr == NULL)
{
printf("Get_Element_Of_DynamicArray error");
}
return arr->pArray[pos-];
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include"DynamicArray.h"
void test01()
{
//初始化动态数组
DynamicArray*My_Array = Init_Array();
//打印数组容量
printf("DynamicArray's capacity is %d\n", Get_Array_Capacity(My_Array));
//打印当前数组元素个数
printf("The number Of DynamicArray is %d\n", Get_Number_Of_DynamicArray(My_Array)); printf("Enter DynamicArray Size\n");
int number;
scanf("%d", &number);
//插入元素
for (int i = ; i < number; i++)
{
Add_Array(My_Array, i);
}
//打印数组容量
printf("DynamicArray's capacity is %d\n", Get_Array_Capacity(My_Array));
//打印当前数组元素个数
printf("The number Of DynamicArray is %d\n", Get_Number_Of_DynamicArray(My_Array)); //打印
Print_Array(My_Array); printf("Enter the posion what you want to delete\n");
int posion;
scanf("%d",&posion);
Delete_BY_ArrayPosition(My_Array, posion);
//打印数组容量
printf("DynamicArray's capacity is %d\n", Get_Array_Capacity(My_Array));
//打印当前数组元素个数
printf("The number Of DynamicArray is %d\n", Get_Number_Of_DynamicArray(My_Array));
//打印
Print_Array(My_Array); printf("Enter the value what you want to delete\n");
int value;
scanf("%d", &value);
Delete_BY_ArrayValude(My_Array, value);
//打印数组容量
printf("DynamicArray's capacity is %d\n", Get_Array_Capacity(My_Array));
//打印当前数组元素个数
printf("The number Of DynamicArray is %d\n", Get_Number_Of_DynamicArray(My_Array));
//打印
Print_Array(My_Array); //根据位置获得某个位置的元素
printf("Enter a position to get the element\n ");
int posion1;
scanf("%d", &posion1);
printf("The element is %d", Get_Element_Of_DynamicArray(My_Array, posion1));
//销毁
Free_Array_space(My_Array); } int main(void)
{
test01();
printf("\n");
system("pause");
return ;
}
C/C++顺序数据结构——动态数组测试的更多相关文章
- 数据结构(1) 第一天 算法时间复杂度、线性表介绍、动态数组搭建(仿Vector)、单向链表搭建、企业链表思路
01 数据结构基本概念_大O表示法 无论n是多少都执行三个具体步骤 执行了12步 O(12)=>O(1) O(n) log 2 N = log c N / log c N (相当于两个对数进行了 ...
- 容器(vector)、数组、new创建的动态数组,你到底用哪一个(执行效率分析)
1.问题的提出 在没有了解vector之前,动态数组一般都是又new创建的.在了解vector后发现vector竟是那样方便好用,但方便的同时却是以牺牲执行效率为代价的.网上对vector和array ...
- [数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习)
[数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习) 在C#中,存在常见的九种集合类型:动态数组ArrayList.列表List.排序列表SortedList.哈希表HashTa ...
- python数据结构之动态数组
数组列表:动态数组(Array List) 简介: 最基础简单的数据结构.最大的优点就是支持随机访问(O(1)),但是增加和删除操作效率就低一些(平均时间复杂度O(n)) 动态数组也称数组列表,在py ...
- 纯数据结构Java实现(1/11)(动态数组)
我怕说这部分内容太简单后,突然蹦出来一个大佬把我虐到哭,还是悠着点,踏实写 大致内容有: 增删改查,泛型支持,扩容支持,复杂度分析.(铺垫: Java语言中的数组) 基础铺垫 其实没啥好介绍的,顺序存 ...
- 一篇文章让你了解动态数组的数据结构的实现过程(Java 实现)
目录 数组基础简单回顾 二次封装数组类设计 基本设计 向数组中添加元素 在数组中查询元素和修改元素 数组中的包含.搜索和删除元素 使用泛型使该类更加通用(能够存放 "任意" 数据类 ...
- 【PHP数据结构】顺序表(数组)的相关逻辑操作
在定义好了物理结构,也就是存储结构之后,我们就需要对这个存储结构进行一系列的逻辑操作.在这里,我们就从顺序表入手,因为这个结构非常简单,就是我们最常用的数组.那么针对数组,我们通常都会有哪些操作呢? ...
- C语言- 基础数据结构和算法 - 动态数组
听黑马程序员教程<基础数据结构和算法 (C版本)>,照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友可 ...
- 常用数据结构-线性表及Java 动态数组 深究
[Java心得总结六]Java容器中——Collection在前面自己总结的一篇博文中对Collection的框架结构做了整理,这里深究一下Java中list的实现方式 1.动态数组 In compu ...
随机推荐
- Yii2 前后台登陆退出分离、登陆验证
这里用的yii2高级模板, 基本模板的配置文件在一个文件里,方法基本没什么区别, 1.用户表要有两个用户表, 当然一个也行,分开是省得麻烦,既然是分离了就彻底分开, 前台表user,后台表user_b ...
- Spark 学习笔记之 MONGODB SPARK CONNECTOR 插入性能测试
MONGODB SPARK CONNECTOR 测试数据量: 测试结果: 116万数据通过4个表的join,从SQL Server查出,耗时1分多.MongoSparkConnector插入平均耗时: ...
- Django2.0入门:第一章、Django是啥
Django介绍 缘起 随着Python语言的兴起,越来越多的程序员开始转向这门语言的学习.在我们学习完Python基础之后,就可以选择利用Python这门语言进行Web应用开发.而众多Python ...
- mac系统Intellij Idea的java环境配置:JDK + Tomcat + Maven
一.JAVA JDK查看与配置 1.查看java路径详细信息: /usr/libexec/java_home -V 2.java默认路径 jdk1.6: /System/Library/Java/Ja ...
- 关于IDEA的Maven打jar包springboot项目问题,打成可执行jar包,IDEA创建的maven项目和spring initializr项目
Spring Initializr创建的项目 源文件地址 https://github.com/TaoPanfeng/maven-package 项目的创建步骤 进行打包 clear package ...
- Mac搭建 Eclipse +Pydev+Python 环境
Mac配置Python开发环境(Eclipse +Pydev+Python) 1.首先下载MAC版的64位Eclipse. eclips下载地址打开链接,选择需要的版本下载 2.下载Python. M ...
- 为什么那么多自学JAVA的后来都放弃了?总结起来就这些原因
目前信息化产业发展势头很好,互联网就成为了很多普通人想要涉及的行业,因为相比于传统行业,互联网行业涨薪幅度大,机会也多,所以就会大批的人想要转行来学习Java开发. 目前来讲市场上需要的Java人员非 ...
- vue图片点击放大预览
第一种:viewerjs使用介绍(PC.移动端都兼容) 1.先安装依赖 npm install v-viewer --save 2.main.js内引用并注册调用 //main.js import V ...
- MySQL视图的优缺点以及如何创建视图
视图,虚拟表,从一个表或多个表中导出来的表,作用和真实表一样,包含一系列带有行和列的数据 视图中,用户可以使用SELECT语句查询数据,也可以使用INSERT,UPDATE,DELETE修改记录,视图 ...
- 虚拟机桥接模式下将虚拟IP设为静态IP
一:虚拟机设置桥接模式 1.进入虚拟机设置中将网络适配器设置成桥接模式,如下图 2.编辑--虚拟网络编辑器--选择桥接 3.如上图中桥接模式下的桥接到--将自动改成与本机匹配的虚拟网卡,本机虚拟网卡查 ...