数据结构—顺序表

来源:互联网 发布:企业网站如何优化 编辑:程序博客网 时间:2024/05/10 23:58

一.顺序表的结构体类型

     包含三个成员:

      1. * case由于顺序表在内存中的空间是连续的,所以申请一个指向顺序表的base指针,申请一个连续空间可以用   下标操作。

      2. capacity 定义一个容量大小。

      3. len 定义一个长度,初始化为0,插入一个数据 len++, 删除一个数据 len--。

    

二.顺序表结构体类型

三.顺序表中重要函数

1.尾插push_back 、头插push_front

     想要插入,顺序表必须没有满,判断条件:seqlist->len >= seqlist->capacity 表示顺序表已满,不能插入。

尾插表不满的话,直接在尾部进行插入,最后记得在len++;

      头插表不满的话,在头部插入之前必须先移动数据,从尾部的数据开始移动base[i] = base[i-1], 循环结束条件是 i>0,然后把x插入到list->base[0],最后记得len++;

2.尾删pop_back 、头删    pop_front

       尾删、头删前提条件是顺序表不能为空seqlist->len <= 0

       尾删的话,顺序表不为空,直接让seqlist->len--;就行,删除不一定非要把该数据给删除了,只要让len--,如果再要插入直接把以前数据覆盖了

       头删的话,顺序表不为空,从头部开始移动list->base[i] = list->base[i+1],最后len--;

3.显示函数show

       显示函数:循环解决问题,从头输出到尾,循环结束条件是i < list->len。

4.头部元素front,尾部元素back    

       返回一个元素类型,用到断言(顺序表不空list->len > 0),最后return头部或者尾部元素

5.按位置插入insert_pos

       按位置插入的话函数原型必须有三个参数(顺序表,位置,插入元素),首先要插入一个元素必须顺序表不满(list->len >= list->capecity),其次插入的位置合法(pos>=0 || pos <list->len),最后插入元素,利用循环移动位置,别忘记给len++。

6.排序sort(冒泡排序)

       冒泡排序的思想是(假设从小到大排序):利用两个循环,让大数往底沉,小数往上冒。

       有n个元素,循环n-1趟(最后一趟就剩一个数。没不要和自己比,所以减1),每一趟中,循环j-1-i(最后一个元素没必要和自己比较,-i是因为跑完i趟就少比i个元 素),然后利用选择语句if(list->base[j] < list->base[j+1]) 前数小于后数,定义一个临时变量temp 交换两数( t = a ,a=b, b=t)。

7.按值插入insert_val

       按值插入的话,首先要是一个排好顺序的顺序表(假如由小到大排序),插入首先顺序表不能满,其次循环比较,满足条件就移动数据(循环条件 i>0 && value<list- >base[i-1]),不满足条件跳出循环,把value插入,最后记得len++;

8.逆置函数reverse

        逆置函数不是反着把顺序表打印一边,而是在内从中真实现实值得翻转。

思想是:定义一个低位low,一个高位high。循环条件(low<high)就交换两数

9.查找函数find

        要查找一个数,顺序表不能空,利用循环,选择语句即可查出元素,否者返回-1.

 

10.清理clean和摧毁destroy

        清理是让顺序表里为空(顺序表为空不一定要让其中的元素得到释放,在栈区的元素,在函数结束由系统释放),让顺序表为空就让其len为0;

        摧毁函数是在清理完成之后,必须手动释放自己开辟的空间(malloc动态开辟的空间在堆区),list->base 赋空,预防野指针。