数据结构*顺序表的操作*初始化一个顺序表

一、初始化操作:

算法思想:构造一个空表。

设置表的起始位置、表长。以及可用空间。

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 .

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值