zoukankan      html  css  js  c++  java
  • C代码实现数组

    直接上代码,没有什么说的

      1 # include <stdio.h>
      2 # include <malloc.h>
      3 # include <stdlib.h>
      4 
      5 //用C实现数组
      6 
      7 typedef struct Array{
      8     int len;//数组的长度
      9     int* pHead;//数组首地址
     10     int cnt;//数组有效元素个数 
     11 }* PARR,ARR; 
     12 
     13 bool insert(PARR arr,int index,int num);
     14 bool add(PARR arr,int num);
     15 bool isEmpty(PARR arr);
     16 void print(PARR arr);
     17 void initArray(PARR arr,int len);
     18 bool isFull(PARR arr);
     19 bool deleteArr(PARR arr,int index);
     20 void sort(PARR arr);
     21 
     22 int main(void)
     23 {
     24     ARR arr;
     25     initArray(&arr,5);
     26     if(isEmpty(&arr)){
     27         printf("数组为空
    ");
     28     }
     29     
     30     add(&arr,111);
     31     add(&arr,2);
     32     add(&arr,33);
     33     add(&arr,4);
     34     add(&arr,5);
     35 //    add(&arr,1);
     36 //    add(&arr,1);
     37     print(&arr);
     38     sort(&arr);
     39     deleteArr(&arr,3);
     40     print(&arr);
     41     
     42     return 0;
     43 }
     44 
     45 //初始化数组
     46 void initArray(PARR arr,int length){
     47     //申请内存
     48     arr->pHead = (int*)malloc(sizeof(int)*length);
     49     if(NULL==arr->pHead){
     50         printf("申请内存失败");
     51         exit(-1);
     52     }
     53     arr->len = length;
     54     arr->cnt = 0;
     55 } 
     56  
     57 //遍历数组
     58 void print(PARR arr){
     59     if(isEmpty(arr)){
     60         printf("数组为空");
     61     }
     62     //for循环打印数组 
     63     for(int i=0; i<arr->cnt; i++){
     64         printf("%d ",arr->pHead[i]);
     65     }
     66     printf("
    ");
     67     
     68 }
     69  
     70 //判读数组是否为空
     71 bool isEmpty(PARR arr){
     72     return arr->cnt==0;
     73 }
     74 
     75 //判断数组是否满
     76 bool isFull(PARR arr){
     77     return arr->cnt==arr->len;
     78 }
     79 
     80 //往数组里添加元素
     81 bool add(PARR arr,int num){
     82     if(isFull(arr)){
     83         printf("数组已满");
     84         return false;
     85     }
     86     
     87     arr->pHead[arr->cnt] = num;
     88     arr->cnt++;
     89     return true;
     90 }
     91 
     92 //向数组中插入元素 
     93 bool insert(PARR arr,int index,int num){
     94     if(isFull(arr)){
     95         return false;
     96     }
     97     if(index<1||index>arr->cnt+1){
     98         return false;
     99     }
    100     
    101     //把index-1之后的数往后移动
    102     for(int i=arr->cnt-1; i>=index-1;i--){
    103         arr->pHead[i+1] = arr->pHead[i];
    104     }
    105     
    106     arr->pHead[index-1] = num;
    107     arr->cnt++;
    108     return true;
    109 }
    110 
    111 //删除指定位置的元素
    112 bool deleteArr(PARR arr,int index){
    113     if(isEmpty(arr)){
    114         return false;
    115     }
    116     if(index<1||index>arr->cnt+1){
    117         return false;
    118     }
    119     
    120     for(int i=index; i<arr->cnt;i++){
    121         arr->pHead[i-1] = arr->pHead[i];
    122     }
    123     arr->cnt--;
    124     return true;
    125 }
    126 
    127 //排序
    128 void sort(PARR arr){
    129      
    130      int i,j,tem;
    131     for(i=0;i<arr->cnt-1;i++) {
    132         for(j=0;j<arr->cnt-1-i;j++){
    133             if (arr->pHead[j]>arr->pHead[j+1]){
    134                 tem = arr->pHead[j];
    135                 arr->pHead[j] = arr->pHead[j+1];
    136                 arr->pHead[j+1] = tem;
    137             }
    138         }
    139     }
    140 } 
    141  
  • 相关阅读:
    element-ui 中Message 消息提示
    MYSQL 常用语法格式
    python 爬取必应每日图片
    linux:文件权限管理
    如何建立自我学习的"触发机制"?
    总有那么一些人,把自己的思想强加给别人
    linux 控制history命令历史记录
    linux apt-get 安装与卸载命令
    ubuntu16.04下 安装java8
    历史与过去是一面镜子,它照到的是你现在的自己
  • 原文地址:https://www.cnblogs.com/makaruila/p/4856469.html
Copyright © 2011-2022 走看看