
算法数据结构学札记 执行时大小可变的动态数据结构 1、讨论执行时大小可变的动态数据结构:链表、堆栈、队列、二叉树。 (1)链表:连成一行的数据项的集合,可以在其中的任意位置进行插入和删除操作; (2)堆栈:对于编译器和操作系统都是非常重要的,插入和删除操作只能在堆栈的一端(顶部)进行; (3)队列:代表正在“等待”的一行数据,数据的插入发生在队列的尾部,删除发生在队列的头部; (4)二叉树:可用来快速查找和排序数据、有效地去除重复的数据项、表示文件系统的目录和把表达式编译成机器语言。2、自引用结构:包含一个指针成员,该指针指向与自身同一个类型的结构。例如: struct node{ int data; struct node * nextPtr; } 类型struct node的指针成员指向了正在被声明的struct node类型的结构,所以把这种结构称为自引用结构。其中,nextPtr可以将一个struct node类型的结构与另一个同类型的结构链在一起。3、可以把自引用结构链在一起构成有用的数据结构,如链表、队列、堆栈和树。NULL指针通常表示一个数据结构的结尾,就像NULL字符表示字符串结尾一样。4、建立和维护动态数据结构需要实现动态内存分配,即程序在执行时为了链接新的结点,要能够获得更多的内存空间以及能够释放不再需要的结点。动态分配内存的极限是计算机中可用的物理内存数量,或者是虚拟存储系统中的可用虚拟内存的数量。5、函数malloc和free以及运算符sizeof对于实现动态内存分配是很重要的。 (1)malloc的参数是被分配的内存字节数,返回指向被分配内存的void *类型的指针,通常和sizeof一起 使用。例如: newPtr = malloc(sizeof(struct node)); 如果没有可用的内存,malloc返回NULL指针。在使用函数malloc时,最好测试返回值是否是NULL。如果没有分配所请求的内存,打印出错报文。 (2)free释放占用的内存,即把所占用的内存交回系统,以便能够重新分配使用。例如: free(newPtr); //释放调用malloc动态分配的内存6、如果不及时释放不再需要的内存会使系统过早地用光内存,有时把这种现象称为“内存泄露”(memory leak)。可用free函数把不需要的内存释放掉。 常见的程序设计错误: (1)释放不是用malloc动态分配的内存; (2)引用已经释放的内存;7、链表是用链节(link)指针链在一起的自引用结构(称为“结点”)的线性集合。链表是通过指向链表第一个结点的指针访问的,其后的结点是通过结点中的链节指针成员访问的。通常,链表的最后一个结点中的链节指针被设置为NU
2、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
3、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
4、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
把毕业论文里的字母和数字都改成Time New Roman格式.doc
广西《园林绿化及仿古建筑工程投资估算、设计概算、施工图预算编制示范文本》.pdf
《GB_T 28797-2012室内塑料垃圾桶》专题研究报告.pptx
KND凯恩帝数控驱动器SD510系列伺服驱动器用户手册(2025年3月)(4).pdf
宣贯培训(2026年)《GBT 30401-2013塑料储藏盒》材料.pptx
原创力文档创建于2008年,本站为文档C2C交易模式,即用户上传的文档直接分享给其他用户(可下载、阅读),本站只是中间服务平台,本站所有文档下载所得的收益归上传人所有。原创力文档是网络服务平台方,若您的权利被侵害,请发链接和相关诉求至 电线) ,上传者





