#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 实现自己构建的数组的更多相关文章

  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].不 ...

  2. 剑指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].不 ...

  3. 【Java】 剑指offer(66) 构建乘积数组

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 给定一个数组A[0, 1, …, n-1],请构建一个数组B[ ...

  4. 《剑指offer》第六十六题(构建乘积数组)

    // 面试题66:构建乘积数组 // 题目:给定一个数组A[0, 1, …, n-1],请构建一个数组B[0, 1, …, n-1],其 // 中B中的元素B[i] =A[0]×A[1]×… ×A[i ...

  5. 剑指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].不 ...

  6. (剑指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].不能 ...

  7. 剑指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]. ...

  8. 【剑指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- ...

  9. [剑指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].不 ...

  10. 构建乘积数组--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].不能使 ...

随机推荐

  1. 分布式系统之CAP理论杂记

    分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:● 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值.● 可用性(A):在集群中一部分节点故障后,集群整体是否 ...

  2. Thymeleaf 3.0 专题

    http://www.thymeleaf.org/doc/articles/layouts.html thymeleaf的初次使用(带参请求以及调用带参js方法) 之前对于前端框架接触较少,第一次接触 ...

  3. 超实用的JavaScript代码段 Item1 --倒计时效果

    现今团购网.电商网.门户网等,常使用时间记录重要的时刻,如时间显示.倒计时差.限时抢购等,本文分析不同倒计时效果的计算思路及方法,掌握日期对象Date,获取时间的方法,计算时差的方法,实现不同的倒时计 ...

  4. 关于new Date()的日期格式处理

    new Date()基本方法: var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整 ...

  5. Java 链接SQL Server 数据库

    1 //Java 连接 SQL Server数据库 2 public static final String DRIVERNAME="com.microsoft.sqlserver.jdbc ...

  6. Ubuntu 16.04 为 root 帐号开启 SSH 登录

    1.先用普通账号登录 2.安装 open ssh: sudo apt-get install openssh-server 3.修改密码: sudo passwd root 4.切换到root账户 s ...

  7. 程序设计语言——实践之路 笔记:Beginning

    这本书已经看了不下3遍了,计划在6月写完1,3,6,7,8,9章的笔记. 为什么要写笔记呢,我觉得有这么几个必要: 1.一个概念的首次提出与补充会跨越几个章节,整理在一起有助记忆 2.所有书籍的安排都 ...

  8. Java后端框架之Spring Boot详解,文末有Java分布式实战项目视频可取

    在 Java 后端框架繁荣的今天,Spring 框架无疑是最最火热,也是必不可少的开源框架,更是稳坐 Java 后端框架的龙头老大. 用过 Spring 框架的都知道 Spring 能流行是因为它的两 ...

  9. Azure Devops/Tfs 编译的时候自动修改版本号

    看到阿迪王那边出品了一个基于Azure Devops自增版本号  链接 http://edi.wang/post/2019/3/1/incremental-build-number-for-net-c ...

  10. 【转】委托的N种写法,你喜欢哪种?

    一.委托调用方式 1. 最原始版本: delegate string PlusStringHandle(string x, string y); class Program { static void ...