C 实现自己构建的数组
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<stdbool.h>
struct arr
{
int * base;
int cent;
int length;
};
int main()
{
void init_arr(struct arr * parr,int length);
bool append_arr(struct arr *,int);
bool insert_arr(struct arr * parr,int pos,int value);
void sort_arr(struct arr *);
bool is_empty(struct arr *);
bool is_full(struct arr * parr);
void inverse_arr(struct arr * );
void show(struct arr * parr);
void delete_arr(struct arr * parr,int pos);
struct arr arry;int length=10;
init_arr(&arry,length);
if(append_arr(&arry,2)){printf("append yes:\n");}
if(append_arr(&arry,123)){printf("append yes:\n");}
if(append_arr(&arry,1)){printf("append yes:\n");}
if(insert_arr(&arry,1,999)){printf("insert yes:\n");}
show(&arry);
sort_arr(&arry);
printf("sort:\n");
show(&arry);
inverse_arr(&arry);
printf("inverse:\n");
show(&arry);
delete_arr(&arry,2);
show(&arry);
return 0;
}
bool is_empty(struct arr * parr)
{
if(parr->cent==0){return (true);}
else return (false);
}
void delete_arr(struct arr * parr,int pos)
{
if( is_empty(parr)){printf("void");}
else if(pos<1||pos>parr->cent){printf("shibai");}
else{
printf("%d_delete_yes",parr->base[pos-1]);
int i;
for(i=pos;i<parr->cent;i++)
{
parr->base[i-1]=parr->base[i];
}
parr->cent--;
}
}
void sort_arr(struct arr * parr)
{
int i,j;int t;
for(i=0;i<parr->cent-1;i++)
{
for(j=0;j<parr->cent-1-i;j++)
{
if((parr->base)[j] > (parr->base)[j+1]){
t=parr->base[j];
parr->base[j]=parr->base[j+1];
parr->base[j+1]=t;}
}
}
}
void inverse_arr(struct arr *parr)
{
int i=0,j=parr->cent-1;int t;
while(i<j)
{
t=parr->base[i];
parr->base[i]=parr->base[j];
parr->base[j]=t;
i++;j--;
}
}
void show(struct arr * parr)
{
if(is_empty(parr))
{
printf("void:\n");
}
else{
int i;
for(i=0;i<parr->cent;i++){printf("%d ",parr->base[i]);}
printf("\n");
}
}
void init_arr(struct arr * parr,int length)
{
parr->base=(int *)malloc(sizeof(struct arr)*length);
if (NULL==parr->base){exit(-1);}
parr->cent=0;
parr->length=length;
}
bool is_full(struct arr * parr)
{
if(parr->cent==parr->length){return true;}
else{return false;}
}
bool append_arr(struct arr * parr,int value)
{
if(is_full(parr)){return false;}
else{
parr->base[parr->cent]=value;parr->cent++;
return true;
}
}
bool insert_arr(struct arr * parr,int pos,int value)
{
if(is_full(parr)){return false;}
if(pos<1||pos>parr->cent+1){return false;}
int i;
for(i=parr->cent-1;i>=pos-1;i--){parr->base[i+1]=parr->base[i];}
parr->base[pos-1]=value;
parr->cent++;
return true;
}
C 实现自己构建的数组的更多相关文章
- 剑指offer(51)构建乘积数组
题目描述 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1].不 ...
- 剑指Offer 51. 构建乘积数组 (数组)
题目描述 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1].不 ...
- 【Java】 剑指offer(66) 构建乘积数组
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 给定一个数组A[0, 1, …, n-1],请构建一个数组B[ ...
- 《剑指offer》第六十六题(构建乘积数组)
// 面试题66:构建乘积数组 // 题目:给定一个数组A[0, 1, …, n-1],请构建一个数组B[0, 1, …, n-1],其 // 中B中的元素B[i] =A[0]×A[1]×… ×A[i ...
- 剑指offer五十一之构建乘积数组
一.题目 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1].不 ...
- (剑指Offer)面试题52:构建乘积数组
题目: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1].不能 ...
- 剑指Offer——构建乘积数组
题目描述: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]. ...
- 【剑指offer】不使用除法,构建乘积数组,C++实现
# 题目 # 思路 设C[i] = A[0] * A[1] * - * A[i-1],D[i] = A[i+1] * - * A[n-1],则C[i]按照从上到下的顺序计算,即C[i] = C[i- ...
- [剑指Offer] 51.构建乘积数组
题目描述 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1].不 ...
- 构建乘积数组--java
题目:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1].不能使 ...
随机推荐
- 【转】spring cloud eureka 参数配置
eureka.client.registry-fetch-interval-seconds 表示eureka client间隔多久去拉取服务注册信息,默认为30秒,对于api-gateway,如果要迅 ...
- CSS布局十八般武艺都在这里了
CSS布局十八般武艺都在这里了 Shelley Lee 4 个月前 布局是CSS中一个重要部分,本文总结了CSS布局中的常用技巧,包括常用的水平居中.垂直居中方法,以及单列布局.多列布局的多种实现方式 ...
- jQuery中 $.ajax()方法详解
$.ajax()方法详解 jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Strin ...
- 修改LINUX的时区。
新装的机器(redhat7)有几台时区不对: 百度了之后找到了以下解决方法输入 tz 依次选择Asia China east China Yes 1 然后 export TZ 新开对话发现 ...
- C语言文件 "w+"与"wb+"区别
这是我今天碰到的问题,现在已经解决, 希望我的整理能够帮助到你们! w+以纯文本方式读写,而wb+是以二进制方式进行读写. mode说明: w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会 ...
- python--装饰器(附偏函数、断言)
博客地址:http://www.cnblogs.com/yudanqu/ 概念:装饰器是一个闭包,把一个函数当做参数返回一个替代版的函数,本质上就是一个返回函数的函数 装饰器就是在我们需要的一个函数外 ...
- 从YOLOv1到v3的进化之路
引言:如今基于深度学习的目标检测已经逐渐成为自动驾驶,视频监控,机械加工,智能机器人等领域的核心技术,而现存的大多数精度高的目标检测算法,速度较慢,无法适应工业界对于目标检测实时性的需求,这时YOLO ...
- 【Java进阶】并发编程
PS:整理自极客时间<Java并发编程> 1. 概述 三种性质 可见性:一个线程对共享变量的修改,另一个线程能立刻看到.缓存可导致可见性问题. 原子性:一个或多个CPU执行操作不被中断.线 ...
- Exp6 信息搜集与漏洞扫描 20164312 马孝涛
1.实践内容 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的查点(以自己主机为目标) (4)漏洞扫描:会扫, ...
- Promise (1) 如何使用Promise
Promise 也是面试高频问题, 今天我们来看看Promise是什么, 能做什么, 怎么用, 下一期我们自己来模拟一个myPromise 1 Promise 是什么 我们要学会自己给自己提问, 才 ...