假期以来我都坚持每天看一点郝斌的数据结构视频。讲的很透彻,也很风趣。
前几天都是为讲数据结构而做准备,讲了一些结构体和指针,今天终于开始正式将数据结构。说实话,我今天才知道函数的用处。。
照着郝斌讲连续存储数组的算法演示,又自己写了一遍,发现有一个错误,左看右看都看不出哪错了,索性贴出了,,,有兴趣的朋友可以看看
百度求助,一位牛人看出错误来,谢谢了!重新贴出正确的代码
- #include<stdio.h>
- #include<malloc.h>
- #include<stdlib.h>//包含exit
- intval,i,t;
- structArr
- {
- int*pBase;
- intlen;
- intcnt;
- };
- voidinit_arr(structArr*pArr,intlength);
- boolappend_arr(structArr*pArr,intval);
- boolinsert_arr(structArr*pArr,intpos,intval);
- booldelete_arr(structArr*pArr,intpos,int*pVal);
- intget();
- boolis_empty(structArr*pArr);
- boolis_full(structArr*pArr);
- voidsort_arr(structArr*pArr);
- voidshow_arr(structArr*pArr);
- voidinversion_arr(structArr*pArr);
- intmain()
- {
- structArrarr;
- init_arr(&arr,6);
- show_arr(&arr);
- append_arr(&arr,1);
- append_arr(&arr,2);
- append_arr(&arr,3);
- append_arr(&arr,4);
- delete_arr(&arr,1,&val);
- return0;
- }
- voidinit_arr(structArr*pArr,intlength)
- {
- pArr->pBase=(int*)malloc(sizeof(int)*length);
- if(NULL==pArr->pBase)
- {
- printf("动态内存分配失败!\n");
- exit(-1);
- }
- else
- {
- pArr->len=length;
- pArr->cnt=0;
- }
- return;
- }
- boolis_empty(structArr*pArr)
- {
- if(0==pArr->cnt)
- returntrue;
- else
- returnfalse;
- }
- boolis_full(structArr*pArr)
- {
- if(pArr->cnt==pArr->len)
- returntrue;
- else
- returnfalse;
- }
- voidshow_arr(structArr*pArr)
- {
- if(is_empty(pArr))
- {
- printf("数组为空\n");
- }
- else
- {
- for(inti=0;i<pArr->cnt;++i)
- printf("%d",pArr->pBase[i]);
- printf("\n");
- }
- }
- boolappend_arr(structArr*pArr,intval)
- {
- if(is_full(pArr))
- returnfalse;
- else
- pArr->pBase[pArr->cnt]=val;
- (pArr->cnt)++;
- returntrue;
- }
- boolinsert_arr(structArr*pArr,intpos,intval)
- {
- inti;
- if(pos<1||pos>pArr->len)
- for(i=pArr->cnt-1;i>=pos-1;--i)
- {
- pArr->pBase[i+1]=pArr->pBase[i];
- }
- pArr->pBase[pos-1]=val;
- returntrue;
- }
- booldelete_arr(structArr*pArr,intpos,int*pVal)
- {
- if(is_empty(pArr))
- returnfalse;
- if(pos<1||pos>pArr->cnt)
- returnfalse;
- *pVal=pArr->pBase[pos-1];
- for(i=pos;i<pArr->cnt;i++)
- {
- pArr->pBase[i-1]=pArr->pBase[i];
- }
- pArr->cnt--;
- returntrue;
- }
- voidinversion_arr(structArr*pArr)
- {
- inti=0;
- intj=pArr->cnt-1;
- intt;
- while(i<j)
- {
- t=pArr->pBase[i];
- pArr->pBase[i]=pArr->pBase[j];
- pArr->pBase[j]=t;
- i++;
- j--;
- }
- return;
- }
- voidsort_arr(structArr*pArr)
- {
- inti,j;
- for(i=0;i<pArr->cnt;i++)
- {
- for(j=i+1;j<pArr->cnt;i++)
- {
- if(pArr->pBase[i]>pArr->pBase[j])
- {
- t=pArr->pBase[i];
- pArr->pBase[i]=pArr->pBase[j];
- pArr->pBase[j]=t;
- }
- }
- }
- }
分享到:
相关推荐
### Java数据结构学习笔记知识点详解 #### 一、数据结构与算法基础 1. **数据结构定义** - 数据结构是一门研究组织数据方式的学科,它与编程语言紧密相关,是实现高效程序设计的基础。 - 在软件开发中,合理选择...
数据结构学习笔记基数排序 详细讲解数据结构学习笔记基数排序 详细讲解数据结构学习笔记基数排序 详细讲解数据结构学习笔记基数排序 详细讲解数据结构学习笔记基数排序 详细讲解数据结构学习笔记基数排序 详细讲解...
数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数...
这本"算法与数据结构学习笔记"涵盖了这两个核心概念的详细讲解,对于任何想要深入理解计算机科学原理、提高编程技能的人来说,都是一份宝贵的资源。 算法,简单来说,就是解决特定问题的步骤或指令集。它在计算机...
"数据结构学习笔记" 本文档是一个关于数据结构学习笔记,涵盖了数据结构的基本概念、逻辑结构、物理结构、算法设计规范、算法时间复杂度分析、空间复杂度分析等方面的内容。下面是对每个知识点的详细解释: 一、...
本压缩包"数据结构学习笔记.zip"包含了丰富的资源,对于大学生来说,是深入理解数据结构的重要参考资料。 在数据结构的学习中,我们首先会接触到线性数据结构,如数组、链表、栈和队列。数组是最基础的数据结构,它...
数据结构是计算机科学中的核心概念,...以上就是数据结构学习笔记的主要内容,涵盖了时间复杂度、空间复杂度、线性表、栈、队列、字符串、数组和矩阵等核心概念。理解并掌握这些知识对于深入学习计算机科学至关重要。
数据结构学习笔记 数据结构是计算机科学中的一门基础学科,研究的是数据的逻辑结构、存储结构和算法。数据结构是指计算机中存储、组织和处理数据的方式。 一、数据结构与算法 1. 时间复杂度:时间复杂度是衡量...
在“算法和数据结构学习笔记.zip”这个压缩包中,很可能包含了丰富的资源,帮助大学生深入理解和掌握这一重要领域。 数据结构的学习通常分为几个关键部分: 1. **线性数据结构**:如数组、链表、栈和队列。数组是...
"算法数据结构学习笔记-C语言.zip"这个压缩包很可能是为大学生提供的一份详细的学习资源,涵盖了数据结构的基础知识、常见算法以及相关的实践练习。 首先,我们要理解数据结构的基本概念,如数组、链表、栈、队列、...
C语言数据结构学习笔记的核心内容可以分为以下几个方面: 1. 数据结构基础 数据结构是计算机存储、组织数据的方式。它包括数据的逻辑结构、物理结构(存储结构)以及数据的运算。 1.1 逻辑结构和物理结构 逻辑结构...