#include <stdio.h>
#include <malloc.h>
#include <stdlib.h> typedef struct Arr
{
int * pBase = NULL; //数组首地址
int cnt; //当前元素个数
int len; //数组大小
} Array, *pArray; bool init_array(pArray arr, int len);
bool append(pArray arr, int val);
bool is_empty(pArray arr);
bool is_full(pArray arr);
void sort(pArray arr);
void reversal(pArray arr);
void show_array(pArray arr);
bool insert(pArray arr, int pos, int val); //pos 表示第一个元素。例如 pos=2,表示第二个元素。但是下标是1
bool del(pArray arr, int pos, int * val); // int * val保存删除的元素 int main(){ getchar();
return ; } bool is_full(pArray arr){
return arr->cnt == arr->len;
} bool is_empty(pArray arr){
return arr->cnt == ;
} bool init_array(pArray arr, int len){
if (len <= ) {
printf("len is too small");
return false;
} arr->pBase = (int*)malloc(sizeof(int)*len);
if (NULL == arr->pBase){
printf("init array is fail");
return false;
}
else{
arr->cnt = ;
arr->len = len;
return true;
} } bool append(pArray arr, int val){
if (is_full(arr)){
return false;
}
arr->pBase[arr->cnt] = val;
arr->cnt++;
return true;
} void sort(pArray arr){
for (int i = ; i < arr->cnt; i++) {
for (int j = ; j < arr->cnt - - i; j++) {
if (arr->pBase[j] > arr->pBase[j + ]) {
int temp = arr->pBase[j];
arr->pBase[j] = arr->pBase[j + ];
arr->pBase[j + ] = temp;
}
}
}
} void show_array(pArray arr){ if (is_empty(arr)){
printf("array is empty");
}
else{
for (int i = ; i < arr->cnt; i++) {
printf("%d ", arr->pBase[i]);
}
} } void reversal(pArray arr){
int i = ;
int j = arr->cnt - ;
while (i < j){
int temp = arr->pBase[i];
arr->pBase[i] = arr->pBase[j];
arr->pBase[j] = temp;
i++;
j--;
}
} bool insert(pArray arr, int pos, int val){
if (is_full(arr)){
printf("array is full");
return false;
} if (pos< || pos>arr->cnt + ){
return false;
} for (int i = arr->cnt - ; i >= pos - ; i--) {
arr->pBase[i + ] = arr->pBase[i];
}
arr->pBase[pos - ] = val;
arr->cnt++;
return true;
} bool del(pArray arr, int pos, int * val){
if (is_empty(arr)){
printf("array is empty");
return false;
} if (pos< || pos>arr->cnt){
return false;
} *val = arr->pBase[pos - ]; for (int i = pos; i < arr->cnt; i++){
arr->pBase[i - ] = arr->pBase[i];
}
arr->cnt--;
return true; }

数据结构之C语言模拟整数数组实现的更多相关文章

  1. C语言实现整数数组的逆置算法

    读入100个整数到一个数组中,写出实现该数组进行逆置的算法. 方法一: 假设100个整数读入到数组a中,算法f1的思想是分别从数组两端依次将对应数进行交换,即a[i]与a[100 - i - 1]进行 ...

  2. [数据结构] 用C语言模拟一个简单的队列程序

    #include<stdio.h> #include <stdlib.h> #include<string.h> #include<math.h> // ...

  3. 手工数据结构系列-C语言模拟栈 hdu1022

    这个题我一开始是这么想的.. 爆搜所有可能的出栈序列 然后对输入进行匹配 这样我感觉太慢 然后我们可以想到直接通过入栈序列对出栈序列进行匹配 但是我犯了一个错误..那就是出栈序列一定到入栈序列里找.. ...

  4. 手工数据结构系列-C语言模拟队列和栈 hdu1702

    #include <stdio.h> #include <stdlib.h> //================= DATA STRUCTURE ============== ...

  5. 手工数据结构系列-C语言模拟队列 hdu1276

    #include <stdio.h> #include <stdlib.h> #define init_size 1000 typedef struct { int head, ...

  6. c语言经典算法——查找一个整数数组中第二大数

    题目: 实现一个函数,查找一个整数数组中第二大数. 算法思想: 设置两个变量max1和max2,用来保存最大数和第二大数,然后将数组剩余的数依次与这两个数比较,如果这个数a比max1大,则先将max1 ...

  7. 数据结构(c语言版)代码

    第1章  绪论       文档中源码及测试数据存放目录:数据结构\▲课本算法实现\▲01 绪论  概述        第一章作为绪论,主要介绍了数据结构与算法中的一些基本概念和术语.对于这些概念术语 ...

  8. [数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习)

    [数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习) 在C#中,存在常见的九种集合类型:动态数组ArrayList.列表List.排序列表SortedList.哈希表HashTa ...

  9. 语言模拟ATM自动取款机系统

    C语言实验报告       题目名称:C语言模拟ATM自动取款机系统 C语言模拟实现ATM自动取款机功能:输入密码,余额查询,取款,存款,转账,修改密码,退出功能: 代码实现的功能: 账号及密码输入: ...

随机推荐

  1. iOS symbolicatecrash工具crash日志分析

    若一个App没有加入Crashlytics或者Buggly这些崩溃日志监控,那么我们在App崩溃的时候如何获取崩溃信息呢? 此时我们可以通过symbolicatecrash工具对手机日志来进行分析定位 ...

  2. C++后台服务如何高效实现多个定时器任务

    大部分云端的后台服务,经常会使用到定时器功能来检测一些状态值的变化,且当定时器较多时,就需要设计统一的定时器管理模块来维护所有的定时器资源.然而要设计性能良好的定时器和管理模块,是需要一定的经验和技巧 ...

  3. PCA(主成分分析)

    PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降 ...

  4. Easyui-交互式消息弹出框

    由于项目在优化的时候需要用到弹出框,按自己的想法是傻傻的用一些alert直接弹出得了,但是这样用户体验度不是特别好,影响界面美观,所以自己还是用了封装好的easyui给的消息框,怎么用呢,这个里面很有 ...

  5. win10更新后IE不见了

    只是快捷方式不见了,到C:\Program Files\internet explorer\iexplore.exe就看到了,可以正常运行

  6. hdu4651(广义五边形数 & 分割函数1)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4651 题意:f(x) 为将 x 分成其他数和的形式的方案数.对于 t 组输入,输出 f(xi). 思路 ...

  7. loj#115. 无源汇有上下界可行流

    \(\color{#0066ff}{ 题目描述 }\) 这是一道模板题. \(n\) 个点,\(m\) 条边,每条边 \(e\) 有一个流量下界 \(\text{lower}(e)\) 和流量上界 \ ...

  8. 图片滚动插件jquery bxslider

    https://www.cnblogs.com/axl234/p/4167196.html

  9. PhpStrom 和 wamp 配置 xdebug

    本地服务器: 1.php.ini  添加内容: ;设置xdebug的端口为9000 xdebug.remote_handler = dbgp xdebug.remote_host= localhost ...

  10. windows_study_3

    描述:如何解决hyper-v全屏不能自适应屏幕大小? 解决:调节虚拟机的分辨率.