`
weiyinchao88
  • 浏览: 1234509 次
文章分类
社区版块
存档分类
最新评论

数据结构学习笔记

 
阅读更多

数据结构学习笔记(一)

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

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

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

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

  1. #include<stdio.h>
  2. #include<malloc.h>
  3. #include<stdlib.h>//包含exit
  4. intval,i,t;
  5. structArr
  6. {
  7. int*pBase;//储存的是数组第一个元素的地址
  8. intlen;//数组所能容纳的最大元素个数
  9. intcnt;//当前数组有效个数
  10. };
  11. voidinit_arr(structArr*pArr,intlength);//初始化
  12. boolappend_arr(structArr*pArr,intval);
  13. boolinsert_arr(structArr*pArr,intpos,intval);//pos的值从1开始
  14. booldelete_arr(structArr*pArr,intpos,int*pVal);
  15. intget();
  16. boolis_empty(structArr*pArr);
  17. boolis_full(structArr*pArr);
  18. voidsort_arr(structArr*pArr);
  19. voidshow_arr(structArr*pArr);
  20. voidinversion_arr(structArr*pArr);//倒置
  21. intmain()
  22. {
  23. structArrarr;
  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. return0;
  32. }
  33. voidinit_arr(structArr*pArr,intlength)
  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. boolis_empty(structArr*pArr)
  49. {
  50. if(0==pArr->cnt)
  51. returntrue;
  52. else
  53. returnfalse;
  54. }
  55. boolis_full(structArr*pArr)
  56. {
  57. if(pArr->cnt==pArr->len)
  58. returntrue;
  59. else
  60. returnfalse;
  61. }
  62. voidshow_arr(structArr*pArr)
  63. {
  64. if(is_empty(pArr))//pArr本来就是地址
  65. {
  66. printf("数组为空\n");
  67. }
  68. else
  69. {
  70. for(inti=0;i<pArr->cnt;++i)
  71. printf("%d",pArr->pBase[i]);
  72. printf("\n");
  73. }
  74. }
  75. boolappend_arr(structArr*pArr,intval)
  76. {
  77. if(is_full(pArr))
  78. returnfalse;
  79. else
  80. pArr->pBase[pArr->cnt]=val;
  81. (pArr->cnt)++;
  82. returntrue;
  83. }
  84. boolinsert_arr(structArr*pArr,intpos,intval)
  85. {
  86. inti;
  87. if(pos<1||pos>pArr->len)
  88. for(i=pArr->cnt-1;i>=pos-1;--i)
  89. {
  90. pArr->pBase[i+1]=pArr->pBase[i];
  91. }
  92. pArr->pBase[pos-1]=val;
  93. returntrue;
  94. }
  95. booldelete_arr(structArr*pArr,intpos,int*pVal)
  96. {
  97. if(is_empty(pArr))
  98. returnfalse;
  99. if(pos<1||pos>pArr->cnt)
  100. returnfalse;
  101. *pVal=pArr->pBase[pos-1];
  102. for(i=pos;i<pArr->cnt;i++)
  103. {
  104. pArr->pBase[i-1]=pArr->pBase[i];
  105. }
  106. pArr->cnt--;
  107. returntrue;
  108. }
  109. voidinversion_arr(structArr*pArr)
  110. {
  111. inti=0;
  112. intj=pArr->cnt-1;
  113. intt;
  114. while(i<j)
  115. {
  116. t=pArr->pBase[i];
  117. pArr->pBase[i]=pArr->pBase[j];
  118. pArr->pBase[j]=t;
  119. i++;
  120. j--;
  121. }
  122. return;
  123. }
  124. voidsort_arr(structArr*pArr)
  125. {
  126. inti,j;//冒泡法
  127. for(i=0;i<pArr->cnt;i++)
  128. {
  129. for(j=i+1;j<pArr->cnt;i++)
  130. {
  131. if(pArr->pBase[i]>pArr->pBase[j])
  132. {
  133. t=pArr->pBase[i];
  134. pArr->pBase[i]=pArr->pBase[j];
  135. pArr->pBase[j]=t;
  136. }
  137. }
  138. }
  139. }

分享到:
评论

相关推荐

    Java数据结构学习笔记

    ### Java数据结构学习笔记知识点详解 #### 一、数据结构与算法基础 1. **数据结构定义** - 数据结构是一门研究组织数据方式的学科,它与编程语言紧密相关,是实现高效程序设计的基础。 - 在软件开发中,合理选择...

    数据结构学习笔记基数排序 详细讲解

    数据结构学习笔记基数排序 详细讲解数据结构学习笔记基数排序 详细讲解数据结构学习笔记基数排序 详细讲解数据结构学习笔记基数排序 详细讲解数据结构学习笔记基数排序 详细讲解数据结构学习笔记基数排序 详细讲解...

    数据结构学习笔记排序算法:基数排序

    数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数...

    算法与数据结构学习笔记

    这本"算法与数据结构学习笔记"涵盖了这两个核心概念的详细讲解,对于任何想要深入理解计算机科学原理、提高编程技能的人来说,都是一份宝贵的资源。 算法,简单来说,就是解决特定问题的步骤或指令集。它在计算机...

    考研数据结构学习笔记.doc

    "数据结构学习笔记" 本文档是一个关于数据结构学习笔记,涵盖了数据结构的基本概念、逻辑结构、物理结构、算法设计规范、算法时间复杂度分析、空间复杂度分析等方面的内容。下面是对每个知识点的详细解释: 一、...

    数据结构学习笔记.zip

    本压缩包"数据结构学习笔记.zip"包含了丰富的资源,对于大学生来说,是深入理解数据结构的重要参考资料。 在数据结构的学习中,我们首先会接触到线性数据结构,如数组、链表、栈和队列。数组是最基础的数据结构,它...

    数据结构学习笔记.docx

    数据结构是计算机科学中的核心概念,...以上就是数据结构学习笔记的主要内容,涵盖了时间复杂度、空间复杂度、线性表、栈、队列、字符串、数组和矩阵等核心概念。理解并掌握这些知识对于深入学习计算机科学至关重要。

    数据结构学习笔记.doc

    数据结构学习笔记 数据结构是计算机科学中的一门基础学科,研究的是数据的逻辑结构、存储结构和算法。数据结构是指计算机中存储、组织和处理数据的方式。 一、数据结构与算法 1. 时间复杂度:时间复杂度是衡量...

    算法和数据结构学习笔记.zip

    在“算法和数据结构学习笔记.zip”这个压缩包中,很可能包含了丰富的资源,帮助大学生深入理解和掌握这一重要领域。 数据结构的学习通常分为几个关键部分: 1. **线性数据结构**:如数组、链表、栈和队列。数组是...

    算法数据结构学习笔记-C语言.zip

    "算法数据结构学习笔记-C语言.zip"这个压缩包很可能是为大学生提供的一份详细的学习资源,涵盖了数据结构的基础知识、常见算法以及相关的实践练习。 首先,我们要理解数据结构的基本概念,如数组、链表、栈、队列、...

    c语言数据结构学习笔记.pdf

    C语言数据结构学习笔记的核心内容可以分为以下几个方面: 1. 数据结构基础 数据结构是计算机存储、组织数据的方式。它包括数据的逻辑结构、物理结构(存储结构)以及数据的运算。 1.1 逻辑结构和物理结构 逻辑结构...

Global site tag (gtag.js) - Google Analytics