顺序表结点结构的定义?
顺序表的定义
线性表的顺序存储又称顺序表。它是用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻。
假定线性表的元素类型为ElemType,则线性表的顺序存储类型描述为:
#define MaxSize 50
typedef struct
{
ElemType data[MaxSize];
int length;
}SqList;
一维数组可以是静态分配的,也可以是动态分配的。在静态分配时,由于数组的大小和空间事先已经固定好,一旦空间占满,再加入新的数据将会产生溢出,进而导致程序奔溃甚至引起其他未知异常。
而在动态分配时,存储数组的空间是在程序执行过程中通过动态存储分配语句分配的,一旦存储空间占满,就另外开辟一块更大的存储区间,将原来的元素复制过去,从而达到扩充存储数组空间的目的,而不需要一次性分配很大的空间。
#define InitSize 100
typedef struct
{
ElemType* dataPtr;
int length;
int size;
}SqList;
C语言的初始动态分配语句为:L.data = (ElemType*)malloc(sizeof(ElemType)*InitSize);
C++语言的初始化动态分配语句为:L.data=new ElemType[InitSize];
注意:动态存储并不是练市存储,它同样属于顺序存储,物理结构没有变化,还是和逻辑结构一样保持相邻,只是分配的空间不再是编译器决定,而是运行时分配。
编程C:使用“监视哨”方法实现顺序表查找?
n个元素都要比较一次,但都不成功,最后监视哨也要比较一次,比较成功,一共比较n+1次。
例子:有5个元素,分别是1,2,3,4,5。要找的元素是8。那么8就是监视哨,数列如下:
8,1,2,3,4,5。
从5开始向前查找,一共要比较6次,比较到监视哨成功,监视哨所在的下标是0,所以返回值为0。

