十.返回key的前驱下标,如果不存在(key无前驱,在表头)返回-1函数
同理这个照抄不定长顺序表的
十一.返回key的后继下标,如果不存在(key无后继,在表尾)返回-1
十二.清空数据函数
跟定长一样
十三.销毁整个内存函数——销毁动态内存
一般只在不定长顺序表里面调用这个函数,定长顺序表里面不调用这个函数。但一般都写上是因为顺序表对外表现都一样,定长和不定长只在底层实现。
这里不能跟定长一样调Clear。前面初始化已经开了一个内存空间来放这个顺序表,那么这个顺序表使用完后不需要这个表了,就要把前面开出来的内存空间销毁了。也就是我们在C语言里面的有malloc必须要free。这里只是malloc和free没有放在一起。malloc在实现里,free在调用里。所以测试和使用里面必须调用销毁函数。
但在像我们前面一堆的函数测试里面,我们发现程序运行输出完之后并没有内存泄漏崩溃,那是因为这里程序已经结束,进程已经退出了,那么系统就会自动释放刚刚运行的内存。内存已经被释放就不会有内存泄漏了。
所以,如果我们的程序是一运行完成就结束释放的,那么可以不调用销毁函数。但现实生活中许多程序都是不退出的。例如微信运行的程序,你会出现半夜三点或一天中某个时间段微信发不了信息的情况吗?没有,微信要让人们每时每刻都能发送信息那它微信运行的程序就一直不能退出。像这种许多的服务器程序是不能关机退出的,每天都24小时运行着,所以里面会直接写个while(1)。
那么不退出,就意味着不会释放内存,那此时有内存不停泄漏的话,就会不断消耗内存,内存越来越小,程序运行就越来越慢了。