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].不能使 ...
随机推荐
- 【转】java中equal与==的区别 其中有个缓冲区,需要注意
转自http://www.cnblogs.com/dolphin0520/p/3592500.html 在学Java时,可能会经常碰到下面的代码: 1 String str1 = new String ...
- js中点与方括号及for...in
中括号运算符总是能代替点运算符.但点运算符却不一定能全部代替中括号运算符. 当用中括号代替点时,属性名需加双引号. 中括号运算符可以用字符串变量的内容作为属性名.点运算符不能. 中括号运算符可以用纯数 ...
- OAthe2 Login use OkHttpClient and OAuth2RestTemplate
http://samchu.logdown.com/posts/1437422-oathe2-login-use-okhttpclient-and-oauth2resttemplate?utm_sou ...
- STM32F1固件库文件讲解与基于固件库新建MDK工程模板
操作系统:win10 1.文件目录 (在cmd下用"cd 文件夹" 进入到要显示的文件夹,如cd d:\en.stsw-stm32054,然后输入tree 回车就会出现上图的目录结 ...
- [CTF隐写]png中CRC检验错误的分析
[CTF隐写]png中CRC检验错误的分析 最近接连碰到了3道关于png中CRC检验错误的隐写题,查阅了相关资料后学到了不少姿势,在这里做一个总结 题目来源: bugku-MISC-隐写2 bugku ...
- spss汉化详解
今天写一下关于SPSS的汉化以及激活码 下载spss: 安装过程比较简单,主要就是激活码: 9DNCAF2O3QVDV7FBIO696OO6GWLNXZPPRYTPWF2PPX7C8T6Y24LMVV ...
- springboot redis多数据源
springboot中默认的redis配置是只能对单个redis库进行操作的. 那么我们需要多个库操作的时候这个时候就可以采用redis多数据源. 本代码参考RedisAutoConfiguratio ...
- selenium 元素(class_name、link_text、css_selector)定位方法
通过元素的定位,使用firebug查找元素 1.示例一,class_name与link_text定位
- 程序设计语言——实践之路 笔记:Beginning
这本书已经看了不下3遍了,计划在6月写完1,3,6,7,8,9章的笔记. 为什么要写笔记呢,我觉得有这么几个必要: 1.一个概念的首次提出与补充会跨越几个章节,整理在一起有助记忆 2.所有书籍的安排都 ...
- 02 JVM 从入门到实战 | 什么样的对象需要被 GC
引言 上一篇文章 JVM 基本介绍 我们了解了一些基本的 JVM 知识,本篇开始逐步学习垃圾回收,我们都知道既然叫垃圾回收,那回收的就应该是垃圾,可是我们怎么知道哪些对象是垃圾呢? 哪些对象需要被回收 ...