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].不能使 ...
随机推荐
- D. Kuro and GCD and XOR and SUM
Kuro is currently playing an educational game about numbers. The game focuses on the greatest common ...
- C语言实现计算双基回文数详解
双基回文数的定义: 如果一个正整数n至少在两个不同的进位制(二进制<=进制=<十进制)b1和b2下都是回文数,则称n是双基回文数. 根据定义,简单的说就是在二进制到十进制之间(包括十进制和 ...
- Using INSERT IGNORE with MySQL to prevent duplicate key errors
An error will occur when inserting a new record in MySQL if the primary key specified in the insert ...
- BOM(浏览器对象模型)
.t1 { background-color: #ff8080; width: 1100px; height: 40px } 一.BOM(浏览器对象模型) 1.screen对象. console.lo ...
- js中函数的写法
js提供了灵活的函数写法,我们常见的函数写法和调用可能是: function ask(){ console.log(1); } ask(); 这样就完成了函数的定义和调用,司空见惯. 还有js里面的匿 ...
- Math.pow();Math.sqrt();
//Math.pow(a,b)功能是a的b次方 (int)Math.sqrt(n):先对n开方,然后转成int类型//例如,(int)Math.sqrt(2)=(int)1.414=1 Math.ab ...
- instrument(2)
学习了instrument之后试着自己写点东西,上一篇的例子中使用的是asm,毕竟是面向字节码的,api还是比较复杂的.其实有时候的需求很简单,无非就是看下类里的方法啊之类的.javassist是基于 ...
- bzoj 1210 [HNOI2004] 邮递员 插头dp
插头dp板子题?? 搞了我一晚上,还tm全是抄的标程.. 还有高精,哈希混入,还是我比较弱,orz各种dalao 有不明白的可以去看原论文.. #include<cstdio> #incl ...
- bzoj3289 Mato的文件管理 莫队+树状数组
求逆序对个数,莫队套树状数组 #include<cstdio> #include<iostream> #include<cstring> #include<c ...
- Asp.Net 中Grid详解两种方法使用LigerUI加载数据库数据填充数据分页
1.关于LigerUI: LigerUI 是基于jQuery 的UI框架,其核心设计目标是快速开发.使用简单.功能强大.轻量级.易扩展.简单而又强大,致力于快速打造Web前端界面解决方案,可以应用于. ...