#ifndef DYNAMIC_ARR_H typedef struct DYNAMIN_ARRay {
#define DYNAMIC_ARR_H
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//实现动态增长,所以我们把它放在堆上
int* addres;//存放数据的地址
int size;//当前有多少个元素
int capacity;//当前最大能容纳多少个元素
}Dynamic_ARRay;//1.初始化,即创建 Dynamic_ARRay* Dynamic_ARRay_init(); //2.插入某个元素,往哪里插入,插入什么元素,所以形式参数如下 void Push_Back_Array(Dynamic_ARRay*arr, int value); //3.删除某个元素,根据元素的位置 void Remove_Back_Array(Dynamic_ARRay*arr, int pos); //4;删除某个元素,根据元素的值 void Removevalue_Array(Dynamic_ARRay*arr, int value); //5.释放该顺序表的内存 void FreeArray_Array(Dynamic_ARRay*arr); //6.打印出该顺序表的值 void Print_Array(Dynamic_ARRay* arr); //7.查找出某个元素。根据值 int Find_Array(Dynamic_ARRay* arr, int value); //8.清空顺序表 void Clear_Array(Dynamic_ARRay* arr); //9.获取当前容量 int capacity_Array(Dynamic_ARRay* arr); //10.根据某个位置获得某个元素 int Pos_Array(Dynamic_ARRay* arr, int pos); //11。获取当前有多少个元素 int size_Array(Dynamic_ARRay*); #endif
.c文件
//线性表分为2类,顺序表与链表,以下为顺序表的代码实现。 #define _CRT_SECURE_NO_WARNINGS #include"DYNAMIC_ARR.h" // 1.初始化,即创建 Dynamic_ARRay* Dynamic_ARRay_init(){ //开辟一片内存 Dynamic_ARRay* myarray = (Dynamic_ARRay*)malloc(sizeof(Dynamic_ARRay)); myarray->size = 0; myarray->capacity = 20;; myarray->addres = (int *)malloc(sizeof(int) * myarray->capacity); return myarray; } /2.插入某个元素,尾部插入,插入什么元素,所以形式参数如下 void Push_Back_Array(Dynamic_ARRay * arr, int value) { if (arr == NULL) { printf("指针出现问题"); return; } if (arr->size == arr->capacity) { int* newspace = (int*)malloc(sizeof(int) * arr->capacity * 2); memcpy(newspace, arr->addres, sizeof(int) * arr->capacity); free(arr->addres); arr->capacity = arr->capacity * 2; arr->addres = newspace; } arr->addres[arr->size] = value; arr->size++; } //3.删除某个元素,根据元素的位置 void Remove_Back_Array(Dynamic_ARRay * arr, int pos) { if (arr == NULL) { return ; } if (pos<0 || pos>=arr->size) { printf("该位置不合法,无法删除该位置的元素"); return; } //覆盖该位置的元素就是删除了,其他位置的元素加加 for (int i = pos;i < arr->size;i++) { arr->addres[i] = arr->addres[i + 1]; } arr->size--; } //4;删除某个元素,根据元素的值 void Removevalue_Array(Dynamic_ARRay* arr, int value) { if (arr == NULL) { return; } int pos = 0;//表示在那个位置发现了相同,打算调用上面的pos函数。 for (int i = 0;i < arr->size;i++) { if (arr->addres[i] == value) { pos = i; break; } } Remove_Back_Array(arr, pos); arr->size--; } //5.释放该顺序表的内存 void FreeArray_Array(Dynamic_ARRay * arr) { if (arr == NULL) { return ; } if (arr->addres != NULL) { free(arr->addres); } free(arr); } //6.打印出该顺序表的值 void Print_Array(Dynamic_ARRay * arr) { for (int i = 0;i < arr->size;i++) { printf("%d ", arr->addres[i]); } printf("n"); } nt Find_Array(Dynamic_ARRay* arr, int value) { if (arr == NULL) { return -1; } for (int i = 0;i < arr->size;i++) { if (value = arr->addres[i]) return value; else printf("该顺序表不存在该元素,查询不到"); } } //8.清空顺序表 void Clear_Array(Dynamic_ARRay* arr) { if (arr == NULL) { return; } arr->size =0 ; } int capacity_Array(Dynamic_ARRay* arr) { if (arr == NULL){ return -1; } return arr->capacity; } //10.根据某个位置获得某个元素 int Pos_Array(Dynamic_ARRay* arr, int pos) { if (arr == NULL) { return -1; } return arr->addres[pos]; } //11.获取当前元素的个数 int size_Array(Dynamic_ARRay*arr){ if (arr == NULL) { return -1; } return arr->size; }
.c测试文件
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> #include"DYNAMIC_ARR.h" void tese() { Dynamic_ARRay * Myarray= Dynamic_ARRay_init(); printf("%d数组大小", capacity_Array(Myarray)); for (int i = 0;i < 30;i++) { Push_Back_Array(Myarray, i); } printf("%d数组大小", capacity_Array(Myarray)); Print_Array(Myarray); //Removevalue_Array(Myarray, 20); Remove_Back_Array(Myarray,1); Removevalue_Array(Myarray, 20); Print_Array(Myarray); FreeArray_Array(Myarray); } int main(void) { tese(); system("pause"); return 0; }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算