• 数组顺序表


    数组顺序表

      1 #include<stdio.h>
      2 #include<stdlib.h>
      3 #include<malloc.h>
      4 #include<stdbool.h>
      5  
      6 struct Arr   
      7 {
      8     int *pBase;   //存储数组第一个元素的地址
      9     int len;   //数组所能容纳的最大元素个数 
     10     int cnt;   //当前数组有效元素 
     11 };
     12 
     13 void init_arr(struct Arr * pArr,int length);
     14 bool append_arr(struct Arr * pArr,int val);  //追加
     15 bool insert_arr(struct Arr * pArr,int pos,int val);  
     16 bool delet_arr(struct Arr * pArr,int pos,int *pVal);
     17 bool is_empty(struct Arr * pArr);
     18 bool is_full(struct Arr * pArr);
     19 void sort_arr(struct Arr * pArr);
     20 void show_arr(struct Arr * pArr);
     21 void inversion_arr(struct Arr * pArr);
     22 
     23  int main()
     24  {
     25     struct Arr arr;
     26     int val;
     27     
     28     printf("--------顺序表初始化--------
    "); 
     29     init_arr(&arr,6);
     30     show_arr(&arr);
     31     printf("
    
    ");
     32     
     33     printf("--------追加元素--------
    "); 
     34     append_arr(&arr,1);
     35     append_arr(&arr,2);
     36     append_arr(&arr,3);
     37     append_arr(&arr,4);
     38     append_arr(&arr,5);
     39     show_arr(&arr); 
     40     printf("
    
    ");
     41     
     42     printf("--------插入元素--------
    ");
     43     insert_arr(&arr,6,99);
     44     show_arr(&arr);
     45     printf("
    
    ");
     46     
     47     printf("--------删除元素--------
    ");
     48     if( delet_arr(&arr,1,&val) )
     49     {
     50         printf("删除成功!
    ");
     51         printf("您删除的元素是:%d
    ",val);
     52     } 
     53     else
     54     {
     55         printf("删除失败!
    ");
     56     }
     57     show_arr(&arr);
     58     printf("
    
    ");
     59     
     60     printf("--------倒置元素--------
    ");
     61     inversion_arr(&arr);
     62     printf("倒置之后的数组内容是:
    ");
     63     show_arr(&arr);
     64     printf("
    
    ");
     65     
     66     printf("--------排序--------
    ");
     67     sort_arr(&arr);
     68     show_arr(&arr);
     69     printf("
    
    ");
     70     return 0;
     71 } 
     72 
     73 void init_arr(struct Arr * pArr,int length)
     74 {
     75     pArr->pBase = (int *)malloc(sizeof(int) * length);
     76     if(NULL == pArr->pBase)
     77     {
     78         printf("动态内存分配失败!
    ");
     79         exit(-1);  //终止整个程序 
     80     }
     81     else
     82     {
     83         pArr->len = length;
     84         pArr->cnt = 0;
     85     } 
     86     return;
     87 }
     88 
     89 bool is_empty(struct Arr * pArr)
     90 {
     91     if(0 == pArr->cnt)
     92         return true;
     93     else
     94         return false;
     95 }
     96 
     97 bool is_full(struct Arr * pArr)
     98 {
     99     if(pArr->cnt == pArr->len)
    100         return true;
    101     else
    102         return false;
    103 }
    104 
    105 void show_arr(struct Arr * pArr)
    106 {
    107     if( is_empty(pArr) )
    108     {
    109         printf("数组为空!
    ");
    110     }
    111     else
    112     {
    113         for(int i=0;i<pArr->cnt;i++)
    114         printf("%d ",pArr->pBase[i]);
    115         printf("
    ");
    116     }
    117 }
    118 
    119 bool append_arr(struct Arr * pArr,int val)
    120 {
    121     //满是返回false
    122     if( is_full(pArr) ) 
    123         return false;
    124     pArr->pBase[pArr->cnt] = val;
    125     pArr->cnt++;
    126     return true;
    127 }
    128 
    129 bool insert_arr(struct Arr * pArr,int pos,int val)
    130 {
    131     
    132     if(is_empty(pArr) )
    133         return false;
    134     if(pos<1 || pos>pArr->len)
    135         return false;
    136     for(int i=pArr->cnt-1;i>=pos-1;--i)  
    137     {
    138         pArr->pBase[i+1] = pArr->pBase[i]; 
    139     }
    140     pArr->pBase[pos-1] = val;
    141     (pArr->cnt)++;
    142     return true;
    143 } 
    144 
    145 bool delet_arr(struct Arr * pArr,int pos,int *pVal)
    146 {
    147     if( is_empty(pArr) )
    148         return false;
    149     if(pos<1 || pos>pArr->cnt)
    150         return false;
    151     *pVal = pArr->pBase[pos-1];
    152     for(int i=pos;i<pArr->cnt;++i)
    153     {
    154         pArr->pBase[i-1] = pArr->pBase[i];
    155     }
    156     pArr->cnt--;
    157     return true;
    158 }
    159 
    160 void inversion_arr(struct Arr * pArr)
    161 {
    162     int i = 0;
    163     int j = pArr->cnt-1;
    164     int t;
    165     while(i<j)
    166     {
    167         t = pArr->pBase[i];
    168         pArr->pBase[i] = pArr->pBase[j];
    169         pArr->pBase[j] = t;
    170         ++i;
    171         --j;
    172     }
    173     return;
    174 }
    175 
    176 void sort_arr(struct Arr * pArr)
    177 {
    178     int i,j,t;
    179     for(i=0;i< pArr->cnt ;++i)
    180     {
    181         for(j=i+1;i< pArr->cnt ;++j)
    182         {
    183             if(pArr->pBase[i] > pArr->pBase[j])
    184             {
    185                 t = pArr->pBase[i];
    186                 pArr->pBase[i] = pArr->pBase[j];
    187                 pArr->pBase[j] = t;
    188             }
    189         }
    190     }
    191 }
  • 相关阅读:
    SQL SERVER XML 学习总结
    Azkaban2官方配置文档
    I.MX6 Android CAN 命令行测试
    nginx 静态网站配置
    nginx php 配置
    uwsgi 配置 初试
    django 初试
    Ubuntu Nginx uwsgi django 初试
    I.MX6 天嵌 E9 U-boot menu hacking
    Ubuntu 搭建 LAMP 服务器
  • 原文地址:https://www.cnblogs.com/aipeicai/p/12197099.html
Copyright © 2020-2023  润新知