一、初始化操作:
算法思想:构造一个空表。
设置表的起始位置、表长。以及可用空间。
1、建立一个空表:
SqList L;
建表首先要申请一个连续空间,这里我们只需要空间的起始地址,设:指针变量elem。
然后表的长度,设为:length。有多少个元素归 length管
空间大小设为listsize,申请的空间。
步骤:
1.申请空间。
2.给length成员初始化为0。
3.给listsize成员初始化为 LIST_INIT_SIZE.
//代码实现
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define LIST_INIT_SIZE 100//最大分配空间
#define LISTINCREMENT 10 //空间分配增量
#define OK 1
#define ERROR 0
typedef int Status;//返回值状态,正确OK错误error
typedef int ElemType;//数据元素的类型,把int改为ElmType方便后期改变数据类型
//线性表的顺序存储的表示2(动态分配)按需分配
typedef struct sqlist
{
ElemType *elem; //空间的基址(地址)
int length; //表长(数据元素的个数)
int listsize; //容量大小()
}sqList;
sqList L;
//---------------------函数声明------------------------
Status InitList_Sq(sqList &L);
//----------------------主函数--------------------------
int main()
{
sqList L;//定义一个顺序表。
InitList_Sq(L);
printf("表空间的基址:%p\n",L.elem);//看表是否创建成功
printf("表的长度:%d\n",L.length);
printf("表的容量大小:%d\n",L.listsize);
return 0;
}
//--------------------自定义函数-------------------------
//初始化操作
Status InitList_Sq(sqList &L)//如果想改变L要加&,不改变不加
{
//第一步:申请空间
L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
//上一行用malloc函数申请一百个空间
if (L.elem == NULL){
printf ("空间栈溢出!\n");
exit (OVERFLOW);
}
//第二步
L.length=0;
//第三步
L.listsize = LIST_INIT_SIZE ;
return OK ;
//if判断一下malloc函数是否申请成功。
}
涉及补充:
malloc函数:
malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。
用法:指针自身 = (指针类型*)malloc(sizeof(指针类型)*数据数量)
L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
L.elem是我们创造的指针,Elemtype*为数据类型, LIST_INIT_SIZE是数据数量。
关键字typedef给类型起一个新名字。
typedef int ElemType
这个语句把int改名为ElemType .