zoukankan      html  css  js  c++  java
  • 数据结构--数组

      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 
      4 struct Arr
      5 {
      6     int * pBase;//存储的是数组的第一个元素的 地址
      7     int len;//数组所能容纳的最大元素的个数
      8     int cnt; //当前数组有效元素的个数
      9     //int increment; //自动增长因子
     10 };
     11 void init_arr( struct Arr * pArr, int length);
     12 bool append_arr(struct Arr *pArr, int val);//追加
     13 bool insert_arr(struct Arr *pArr, int pos , int val);
     14 bool delete_arr(struct Arr *pArr, int pos , int *pVal);
     15 int get();
     16 bool is_empty(struct Arr*);
     17 bool is_full(struct Arr*);
     18 void sort_arr();
     19 void show_arr(struct Arr*);
     20 void inversion_arr(struct Arr *pArr);
     21 
     22 
     23 int main(void)
     24 {
     25     struct Arr arr;
     26     int val;
     27 
     28     init_arr(&arr,6);
     29     
     30     append_arr(&arr,1);
     31     append_arr(&arr,2);
     32     append_arr(&arr,3);
     33     append_arr(&arr,4);
     34     append_arr(&arr,5);
     35     insert_arr(&arr,1,99);
     36 
     37     if(delete_arr(&arr,1,&val))
     38     {
     39         printf("删除成功!
    ");
     40         printf("您删除的元素是:%d
    ",val);
     41     }
     42     else
     43     {
     44         printf("删除失败!
    ");
     45     }
     46     show_arr(&arr);
     47     sort_arr(&arr);  //选择排序
     48 
     49 
     50 
     51 
     52     return 0;
     53 }
     54 void init_arr(struct Arr *pArr,int length)
     55 {
     56     pArr->pBase =(int *)malloc(sizeof(struct Arr)*length);//申请length个连续空间 来存放array的所有地址
     57     if(NULL ==pArr->pBase)
     58     {
     59       printf("动态内存分配失败
    ");
     60       exit(-1); //终止整个程序
     61     }
     62     else
     63     {
     64         pArr->len = length;
     65         pArr->cnt = 0;
     66     }
     67     return;
     68 }
     69 void show_arr(struct Arr *pArr)
     70 {
     71     if(is_empty(pArr))
     72     {
     73         printf("数组为空!
    ");
     74     }
     75     else
     76     {
     77         for(int i = 0; i<pArr->cnt;i++)
     78         {
     79              printf("arr[%d] =%d ",i, pArr->pBase[i]);//或者   *((pArr->pBase)+i) 
     80              printf("
    ");
     81         }
     82     }
     83 }
     84 bool is_empty(struct Arr *pArr)
     85 {
     86     return (pArr->cnt)? 0:1;
     87 }
     88 
     89 bool is_full(struct Arr* pArr)
     90 {
     91     return (pArr->cnt ==  pArr->len)? 1:0;
     92 }
     93 bool append_arr(struct Arr *pArr, int val)
     94 {
     95     if(is_full(pArr))
     96     {
     97         return false;
     98     }
     99     else
    100     {
    101         pArr->pBase[pArr->cnt]=val;   //*(pArr->pBase +pArr->cnt) = val;
    102         pArr->cnt ++;
    103         return true;
    104     }
    105 }
    106 bool insert_arr(struct Arr *pArr, int pos , int val)
    107 {
    108     if(is_full(pArr))
    109     return false;
    110     if(pos<1 ||pos>pArr->cnt+1)
    111     return  false;
    112     else
    113     {
    114         int i;
    115         for(i = pArr->cnt-1 ;i>=pos-1;--i) 
    116         {
    117             pArr ->pBase[i+1] = pArr->pBase[i];
    118         }
    119         pArr->pBase[pos-1] = val;
    120         pArr->cnt++;
    121         return true;
    122     }
    123 }
    124 bool delete_arr(struct Arr *pArr, int pos ,int *pVal)
    125 {
    126 
    127     int i;
    128     if(is_empty(pArr))
    129         return false;
    130     if(pos<1||pos > pArr->cnt)
    131         return false;
    132     *pVal = pArr->pBase[pos-1];
    133     for(i = pos ; i<pArr->cnt ;++i)
    134     {
    135         pArr->pBase[i-1] = pArr->pBase[i]; 
    136     }
    137     return true;
    138 }
    139 void inversion_arr(struct Arr *pArr)
    140 {
    141     int i=0;
    142     int j = pArr->cnt-1;
    143     int t;
    144     while(i<j)
    145     {
    146         t = pArr->pBase[i];
    147         pArr->pBase[i] = pArr->pBase[j];
    148         pArr->pBase[j]=t;
    149         i++;
    150         j--;
    151     }
    152 }
    153 
    154 
    155 void sort_arr(struct Arr*pArr)
    156 {
    157     int i,j,t;
    158     for(i = 0;i<pArr->cnt;++i)
    159     {
    160         for(j =i+1;j<pArr->cnt;++j)
    161         {
    162             if(pArr->pBase[i]>pArr->pBase[j])
    163             {
    164                 t = pArr->pBase[i];
    165                 pArr->pBase[i] = pArr->pBase[j];
    166                 pArr->pBase[j]=t;
    167             }
    168         }
    169     }
    170 }
  • 相关阅读:
    解决mysqldump: Got error: 1044: Access denied for user
    Ubuntu技巧之 is not in the sudoers file解决方法
    mysql日志详细解析
    linux利用grep查看打印匹配的下几行或前后几行的命令
    Linux无法使用userdel删除用户和组的解决办法
    ubuntu快速清理磁盘垃圾
    smarty中math函数的用法
    metinfo首页内容简介
    linux命令别名的使用
    mysql 导出表结构和表数据 mysqldump用法
  • 原文地址:https://www.cnblogs.com/yuejian/p/12382494.html
Copyright © 2011-2022 走看看