数据结构学习笔记

数据结构学习笔记(一)

假期以来我都坚持每天看一点郝斌的数据结构视频。讲的很透彻,也很风趣。

前几天都是为讲数据结构而做准备,讲了一些结构体和指针,今天终于开始正式将数据结构。说实话,我今天才知道函数的用处。。

照着郝斌讲连续存储数组的算法演示,又自己写了一遍,发现有一个错误,左看右看都看不出哪错了,索性贴出了,,,有兴趣的朋友可以看看

百度求助,一位牛人看出错误来,谢谢了!重新贴出正确的代码

[cpp] view plaincopy
  1. #include <stdio.h>  
  2. #include <malloc.h>  
  3. #include <stdlib.h>   //  包含exit  
  4. int val,i,t;  
  5. struct Arr  
  6. {  
  7.     int * pBase;    //储存的是数组第一个元素的地址  
  8.     int len;    //数组所能容纳的最大元素个数  
  9.     int cnt;    //当前数组有效个数  
  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);     //pos的值从1开始  
  14. bool delete_arr(struct Arr * pArr,int pos,int *pVal);  
  15. int get();  
  16. bool is_empty(struct Arr * pArr);  
  17. bool is_full(struct Arr * pArr);  
  18. void sort_arr(struct Arr * pArr);  
  19. void show_arr(struct Arr * pArr);  
  20. void inversion_arr(struct Arr * pArr);  //倒置  
  21. int main()  
  22. {  
  23.     struct Arr arr;  
  24.     init_arr(&arr,6);  
  25.     show_arr(&arr);  
  26.     append_arr(&arr,1);  
  27.     append_arr(&arr,2);  
  28.     append_arr(&arr,3);  
  29.     append_arr(&arr,4);  
  30.     delete_arr(&arr,1,&val);  
  31.     return 0;  
  32. }  
  33. void init_arr(struct Arr * pArr,int length)  
  34. {  
  35.     pArr->pBase = (int *)malloc(sizeof(int) * length);  
  36.     if (NULL == pArr->pBase)  
  37.     {  
  38.         printf("动态内存分配失败!\n");  
  39.         exit(-1);   //终止整个程序  
  40.     }  
  41.     else  
  42.     {  
  43.         pArr->len = length;  
  44.         pArr->cnt = 0;  
  45.     }  
  46.     return;  
  47.   
  48. }  
  49. bool is_empty(struct Arr * pArr)  
  50. {  
  51.     if(0 == pArr->cnt)  
  52.         return true;  
  53.     else  
  54.         return false;  
  55. }  
  56. bool is_full(struct Arr * pArr)  
  57. {  
  58.     if(pArr->cnt == pArr->len)  
  59.         return true;  
  60.     else  
  61.         return false;  
  62. }  
  63. void show_arr(struct Arr * pArr)  
  64. {  
  65.     if( is_empty(pArr) )    //pArr本来就是地址  
  66.     {  
  67.         printf("数组为空\n");  
  68.     }  
  69.     else  
  70.     {  
  71.         for(int i=0;i<pArr->cnt;++i)  
  72.             printf("%d   ",pArr->pBase[i]);  
  73.         printf("\n");  
  74.     }  
  75. }  
  76. bool append_arr(struct Arr * pArr,int val)  
  77. {  
  78.     if( is_full(pArr) )  
  79.         return false;  
  80.     else  
  81.         pArr->pBase[pArr->cnt] = val;  
  82.         (pArr->cnt)++;  
  83.     return true;  
  84. }  
  85. bool insert_arr(struct Arr * pArr,int pos,int val)  
  86. {  
  87.     int i;  
  88.     if(pos<1||pos>pArr->len)  
  89.     for (i=pArr->cnt-1;i>=pos-1;--i)  
  90.     {  
  91.         pArr->pBase[i+1] = pArr->pBase[i];  
  92.     }  
  93.     pArr->pBase[pos-1] = val;  
  94.     return true;  
  95. }  
  96. bool delete_arr(struct Arr * pArr,int pos,int *pVal)  
  97. {  
  98.     if ( is_empty(pArr) )  
  99.         return false;  
  100.     if (pos<1|| pos>pArr->cnt)  
  101.         return false;  
  102.     *pVal = pArr->pBase[pos-1];  
  103.     for(i=pos; i<pArr->cnt;i++)  
  104.     {  
  105.         pArr->pBase[i-1] = pArr->pBase[i];  
  106.     }  
  107.     pArr->cnt--;  
  108.     return true;  
  109. }  
  110. void inversion_arr(struct Arr * pArr)  
  111. {  
  112.     int i = 0;  
  113.     int j = pArr->cnt-1;  
  114.     int t;  
  115.     while (i<j)  
  116.     {  
  117.         t = pArr->pBase[i];  
  118.         pArr->pBase[i] = pArr->pBase[j];  
  119.         pArr->pBase[j] = t;  
  120.         i++;  
  121.         j--;  
  122.     }  
  123.     return;  
  124. }  
  125. void sort_arr(struct Arr * pArr)  
  126. {  
  127.     int i,j;    //冒泡法  
  128.     for(i=0;i<pArr->cnt;i++)  
  129.     {  
  130.         for(j=i+1;j<pArr->cnt;i++)  
  131.         {  
  132.             if(pArr->pBase[i] > pArr->pBase[j])  
  133.             {  
  134.                 t = pArr->pBase[i];  
  135.                 pArr->pBase[i] = pArr->pBase[j];  
  136.                 pArr->pBase[j] = t;  
  137.             }  
  138.         }  
  139.     }  
  140. }  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452986.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2018-1-27:内存的划分

内存的划分 1.寄存器 2.本地方法区 3.方法区 4.栈内存 存储的都是局部变量&#xff0c;变量的作用域一结束&#xff0c;该变量就立即释放 5.堆内存 存储的是对象&#xff0c;即凡是new的都在堆中 特点&#xff1a;   1.每一个实体都有首地址 2.堆内存中每一个变量都有默认初始…

mysql 1130 localhost_解决1130 Host 'localhost' is not allowed to connect to this MySQL server

WAMP 64bit安装好后&#xff0c;连接数据库&#xff0c;提示#1130 Host ‘localhost’ is not allowed to connect to this MySQL server1.首先停止mysql服务&#xff0c;如果不会可以直接停止所有wampserver。2.然后打开一个命令行窗口&#xff0c;切换到mysql的安装目录&…

Ubuntu 14.04下安装Redis报错:“You need tcl 8.5 or newer in order to run the Redis test”问题解决

解决方案参考文献&#xff1a;安装tcl https://blog.csdn.net/zhangshu123321/article/details/51440106 感谢楼主分享&#xff01;

InstallSheild 获取系统环境变量,如Desktop路径等

使用FOLDER_DESKTOP变量获取的桌面路径可能为&#xff1a;C:\Users\Public\Desktop 而不是C:\Users\用户\Desktop Copy and paste the following define statements at the beginning of your setup.rul file. Also, make sure you copy and paste the prototype for the SHGe…

线程2---异步1

在Java中什么是同步&#xff1f;什么是异步&#xff1f;对于这两个概念我们必须要明确。只有明确这两个概念&#xff0c;才会在明确在什么场景下使用同步以及异步。 在这里我可以形象的举个例子来辨明这两个概念&#xff1a; 1.同步与异步同步和异步关注的是消息通信机制 (sync…

mysql通常使用语句_Mysql 常用SQL语句集锦

基础篇//查询时间&#xff0c;友好提示$sql "select date_format(create_time, %Y-%m-%d) as day from table_name";//int 时间戳类型$sql "select from_unixtime(create_time, %Y-%m-%d) as day from table_name";//一个sql返回多个总数$sql "sel…

为什么你需要设计和维护一套自我移动标准?

在一个很长的调研日的休息时分&#xff0c;我在同一个客户谈一个项目&#xff0c;在这个项目中&#xff0c;我正为一个全球经济公司开发一个iOS标准。他们的第一反应是这样的&#xff1a;“什么&#xff1f;你在开发Apple iOS以外的标准&#xff1f;那还要开发什么&#xff1f;…

JS 小知识点汇总

1.offsetWidth & width A:因为. 1.offsetWidth是只读属性&#xff0c;而style.width是可读写得。2.offsetWidth返回的是一个整数&#xff0c;style.width返回的是一个字符串,并且带有单位&#xff1b;**3.style.width只能返回以style方式定义的内部样式的width属性值。4.of…

django-redis中redis.conf配置详细说明

参考文献&#xff1a;https://blog.csdn.net/ljphilp/article/details/52934933 感谢楼主分享&#xff01;

初识Mysql(一)

1 搭建数据库服务器2 MYSQL数据类型3 修改表结构1 搭建数据库服务器1.1 存在mariadb时&#xff1a;#systemctl status mariadb#systemctl stop mariadb#rpm -e --nodeps mariadb-libs #不依赖关系卸载#rm -rf /etc/my.cnf#rm -rf /var/lib/mysql/*1.2 新安装时[rootser51 ~]# …

数据挖掘资料

https://blog.csdn.net/baimafujinji/article/details/53269040 在2006年12月召开的 IEEE 数据挖掘国际会议上&#xff08;ICDM&#xff0c; International Conference on Data Mining&#xff09;&#xff0c;与会的各位专家选出了当时的十大数据挖掘算法&#xff08; top 10 …

如何进行个人知识管理和提高自己能力?

21世纪是一个知识爆炸的世纪&#xff0c;知识爆炸是指人类创造的知识,主要是自然科学知识,在短时期内以极高的速度增长起来。是人们对当前大量出现并飞速发展的各种知识现象所进行的夸张和描述。有人综合计算,全世界的知识总量,七到十年翻一番。这就是风行全球的摩登名词的意思…

redis服务器端和客户端启动

服务器端 sudo redis-server /etc/redis/redis.conf 指定加载的配置文件 ps -ef|grep redis 查看redis服务器进程 sudo kill -9 pid 杀死redis服务器 连接特定IP的redis&#xff1a;

hive表移到mysql_如何将Hive数据表移动到MySql?

我想知道如何将日期从Hive转移到MySQL&#xff1f;我已经看到了如何将hive数据移动到Amazon DynamoDB而不是像MySQL这样的RDBMS的示例.以下是我在DynamoDB中看到的示例&#xff1a;CREATE EXTERNAL TABLE tbl1 ( name string, location string )STORED BY org.apache.hadoop.hi…

账簿与平衡段关联表

gl_ledger_norm_seg_vals转载于:https://www.cnblogs.com/lizicheng/p/8817982.html

超级丑数

题目&#xff1a; 写一个程序来找第 n 个超级丑数。超级丑数的定义是正整数并且所有的质数因子都在所给定的一个大小为 k 的质数集合内。比如给你 4 个质数的集合 [2, 7, 13, 19], 那么 [1, 2, 4, 7, 8, 13, 14, 16, 19, 26, 28, 32] 是前 12 个超级丑数。注意事项&#xff1a;…

为什么要进行个人知识管理(PKM)

21世纪是一个知识爆炸的世纪&#xff0c;知识爆炸是指人类创造的知识,主要是自然科学知识,在短时期内以极高的速度增长起来。是人们对当前大量出现并飞速发展的各种知识现象所进行的夸张和描述。有人综合计算,全世界的知识总量,七到十年翻一番。这就是风行全球的摩登名词的意思…