数据长度与线性表长度的区别
1 数组的长度是存放线性表的存储空间的长度,存储分配后这个量是一般是不变的。
2 线性表的长度是线性表中数据元素的个数,随着线性表插入和删除操作的进行,这个量是变化的。
3 在任意时刻,线性表达的长度应该小于等于数字的长度。
地址计算方法:用数组存储顺序表意味着要分配固定长度的数组空间,
由于线性表中科院进行插入和删除操作,因为分配的数组空间要大于等于当前线性表的长度。
顺序存储结构的插入与删除
获得元素操作:程序而言,只要i的数值在数组下标范围内,就是八数组第i-1下标的值返回即可。
插入算法的思路:1如果插入位置不合理,抛出异常,
2如果线性表长度大于等于数组长度,则抛出异常或动态增加容量;
3从最后一个元素开始向前遍历到第i个位置,分别将它们都向后移动一个位置;
4将要插入元素填入位置处;
5表长加1。
删除操作: 1如果删除位置不合理,抛出异常,
2取出删除元素;
3从删除元素位置开始遍历到最后一个元素位置,分别将它们都向前移动一个位置
4表长减1
线性表顺序存储结构的优缺点
优点:1无须为表示表中元素之间的逻辑关系而增加额外的存储空间,2可以快速存取表中任一位置的元素。
缺点:1插入和删除操作需要移动大量元素,2当线性表长度变化较大时,难以确定存储空间的容量,
3造成存储空间的“碎片”;
线性表的链式存储结构
定义:现在链式结构中,除了要存数据元素信息外,还有存储它的后继元素的存储地址,
把存储数据元素信息的域称为数据域,把存储直接后继外的的域称为指针,域。
指针域中存储的信息称作指针或链。这两部分信息组成数据元素a1的存储映象,称为结点(Node)。
单链表中的第一个结点前附设一个结点,称为头结点,头结点的数据域可以不存储任何信息。
头结点的指针域存储指向第一个结点的指针。
链表中第一个结点的存储位置叫做头指针,之后的每一个结点,其实就是上一个后继指针指向的位置。
头指针与头结点的异同
头指针: 1头指针是指链表指向第一个结点的指针,若链表有头结点则是指向头结点的指针。
2头指针具有标识作用,所以常用头指针冠以链表的名字。
3无论链表是否为空,头指针均不为空 。头指针是链表的必要元素。
头结点:1头结点是为了操作的统一和方便而设定的,放在第一元素的结点之前 ,
其数据域一般无意义(也可以存放链表的长度)。
2有了头结点,对在第一元素结点前面插入结点和删除第一结点,其操作与其它结点的操作就统一了。
3头结点不一定是链表必须要素。