新技术论坛
搜索
查看: 1502|回复: 2
打印 上一主题 下一主题

[VC/C++] 无聊写的一个

[复制链接]
  • TA的每日心情
    无聊
    2016-9-11 15:26
  • 签到天数: 107 天

    连续签到: 1 天

    [LV.6]常住居民II

    扫一扫,手机访问本帖
    楼主
    跳转到指定楼层
    发表于 2016-6-16 19:26:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    无聊写的一个




    上传缩进好多没了,下面有文件
    1. #include <stdio.h>
    2. #include <malloc.h>
    3. #include <stdlib.h>

    4. typedef struct Arr
    5. {
    6.         int * pBase;    //存放数组首元素地址
    7.         int len;                //数组最大元素个数
    8.         int cnt;                //数组有效元素个数
    9.         int increment;  //自动增长因子
    10. } Array;

    11. /*-------------------------------------------------------------------------------------------------------------------------------------------------------*/

    12. void init_arr(Array * pArr, int length, int incre);        //初始化----------------参数:结构体地址,初始长度,增长因子
    13. bool addend_arr(Array * pArr, int val);        //追加------------------------------参数:结构体地址,数值
    14. bool insert_arr(Array * pArr, int num, int val);        //插入------------------参数:结构体地址,插入位置,数值
    15. bool delete_arr(Array * pArr, int num);        //删除------------------------------参数:结构体地址,删除位置
    16. int get(Array * pArr,int val);        //获取元素下标------------------------------参数:结构体地址,元素值        返回值:整型,为该值在数组中的下标
    17. bool is_empty(Array * pArr);        //数组是否为空------------------------------参数:结构体地址
    18. bool is_full(Array * pArr);        //数组是否存满----------------------------------参数:结构体地址
    19. void sort_arr(Array * pArr);        //排序--------------------------------------参数:结构体地址
    20. void show_arr(Array * pArr);        //显示数组----------------------------------参数:结构体地址
    21. void inversion_arr(Array * pArr);        //增加长度------------------------------参数:结构体地址

    22. /*--------------------------------------------------------------------------------------------------------------------------------------------------------*/

    23. //主函数
    24. void main()
    25. {
    26.         Array num;
    27.         init_arr(&num, 10, 1);        //初始化
    28.         addend_arr(&num,1);                //追加
    29.         addend_arr(&num,8);
    30.         addend_arr(&num,14);
    31.         addend_arr(&num,21);
    32.         addend_arr(&num,10);
    33.         addend_arr(&num,91);
    34.         addend_arr(&num,2);
    35.         show_arr(&num);
    36.         insert_arr(&num,0,12);        //插入
    37.         insert_arr(&num,0,18);        //插入
    38.         show_arr(&num);
    39.         int x = get(&num,18);        //获取元素下标
    40.         printf("18 is num[%d]\n", x);
    41.         sort_arr(&num);                        //排序
    42.         show_arr(&num);
    43. }



    44. //初始化
    45. void init_arr(Array * pArr, int length, int incre)
    46. {
    47.         pArr->pBase = (int *)malloc(sizeof(int) * length);
    48.         if( NULL == pArr->pBase )
    49.         {
    50.                 printf("内存分配失败!\n");
    51.                 exit(-1);
    52.         }
    53.         else
    54.         {
    55.                 pArr->len = length;
    56.                 pArr->cnt = 0;
    57.                 pArr->increment = incre;
    58.         }

    59.         return;
    60. }

    61. //追加
    62. bool addend_arr(Array * pArr, int val)
    63. {
    64.         if( is_full(pArr) )
    65.                 inversion_arr(pArr);

    66.         pArr->pBase[pArr->cnt] = val;

    67.        
    68.         if(val = pArr->pBase[pArr->cnt] )
    69.         {
    70.                 pArr->cnt = pArr->cnt + 1;
    71.                 return true;
    72.         }
    73.         else
    74.         {
    75.                 return false;
    76.         }
    77. }

    78. //插入
    79. bool insert_arr(Array * pArr, int num, int val)
    80. {
    81.         //判断插入的是否超出,否-》:末尾依次向后移动,一个
    82.         if( pArr->cnt < num)
    83.         {
    84.                 printf("超出数组长度!\n");
    85.                 exit(-1);
    86.         }
    87.         else if( (pArr->cnt+1) == pArr->len)
    88.                 inversion_arr(pArr);

    89.         for(int i=0; i < (pArr->cnt-num) ;i++)
    90.         {//后移元素
    91.                 pArr->pBase[pArr->cnt-i] = pArr->pBase[pArr->cnt-i-1];  
    92.         }
    93.         pArr->pBase[num] = val; //插入元素
    94.         if( pArr->pBase[num] == val)
    95.         {
    96.                 pArr->cnt = pArr->cnt + 1;
    97.                 return true;
    98.         }
    99.         else
    100.                 return false;

    101. }

    102. //删除元素
    103. bool delete_arr(Array * pArr, int num)
    104. {
    105.         pArr->pBase[num-1] == NULL;

    106.         for(int i=num; i<pArr->cnt; i++)
    107.         {//前移元素
    108.                 pArr->pBase[i-1] = pArr->pBase[i];
    109.         }
    110.         pArr->cnt = pArr->cnt -1;
    111.         return true;
    112.        
    113. }

    114. //获取元素的位置
    115. int get(Array * pArr,int val)
    116. {
    117.         for(int i=0; i<pArr->cnt; i++)
    118.         {
    119.                 if( pArr->pBase[i] == val)
    120.                         return i;
    121.         }
    122. }

    123. //数组是否为空
    124. bool is_empty(Array * pArr)
    125. {
    126.         if(0== pArr->cnt)
    127.                 return true;
    128.         else
    129.                 return false;
    130. }

    131. //数组是否存满
    132. bool is_full(Array * pArr)
    133. {
    134.         if(pArr->len == pArr->cnt)
    135.                 return true;
    136.         else
    137.                 return false;
    138. }

    139. //排序
    140. void sort_arr(Array * pArr)
    141. {
    142.         for(int x=0;x<pArr->cnt-1;x++)
    143.         {
    144.                 for(int y=x+1;y<pArr->cnt;y++)
    145.                 {
    146.                         if( pArr->pBase[x] >= pArr->pBase[y] )
    147.                         {
    148.                                 int change;
    149.                                 change = pArr->pBase[y];
    150.                                 pArr->pBase[y] = pArr->pBase[x];
    151.                                 pArr->pBase[x] = change;
    152.                         }
    153.                 }
    154.         }
    155. }

    156. //显示数组
    157. void show_arr(Array * pArr)
    158. {
    159.         if( is_empty(pArr) )
    160.                 printf("数组为空!\n");
    161.         else
    162.         {
    163.                 for(int i=0;i<pArr->cnt;i++)
    164.                 {
    165.                         printf("%d ", pArr->pBase[i] );
    166.                 }
    167.                 printf("\n");
    168.         }

    169.         return;
    170. }

    171. //增加长度
    172. void inversion_arr(Array * pArr)
    173. {        //扩充内存
    174.         pArr->pBase = (int *)realloc(pArr->pBase, sizeof(int) * (pArr->len+pArr->increment));
    175.         if( NULL == pArr->pBase )
    176.         {
    177.                 printf("内存扩充失败!\n");
    178.                 exit(-1);
    179.         }
    180.         else
    181.         {
    182.                 pArr->len = pArr->len + pArr->increment;
    183.         }

    184. }
    复制代码
    array.rar (1.35 KB, 下载次数: 0)



  • TA的每日心情
    慵懒
    2017-1-5 23:52
  • 签到天数: 183 天

    连续签到: 2 天

    [LV.7]常住居民III

    沙发
    发表于 2016-6-17 22:43:41 | 只看该作者
    教科书熟悉的味道、、、、、、、、、、
  • TA的每日心情
    无聊
    2016-9-11 15:26
  • 签到天数: 107 天

    连续签到: 1 天

    [LV.6]常住居民II

    板凳
     楼主| 发表于 2016-6-19 19:02:53 | 只看该作者
    true 发表于 2016-6-17 22:43
    教科书熟悉的味道、、、、、、、、、、

    嗯啊,在弄数据结构的笔记,卖钱。。
    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    手机版|Archiver|开发者俱乐部 ( ICP/ISP证:辽B-2-4-20110106号 IDC证:辽B-1-2-20070003号 )

    GMT+8, 2024-12-22 23:58 , Processed in 0.132629 second(s), 20 queries .

    X+ Open Developer Network (xodn.com)

    © 2009-2017 沈阳讯网网络科技有限公司

    快速回复 返回顶部 返回列表