步骤:创建->初始化->输入->输出
一.创建
头文件
定义MAXSIZE大小(即后面数组的大小)
定义有意义的ERROR,FALSE=0,OK,TURE=1
定义一些有意义的int
整合数据项:不同的数据项存入结构体并自定义数据类型的名称
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;//Status相当于int
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int length;
}SqList;
二.初始化
需要返回一个指针
初始化指针=NULL
动态分配内存
判断是否分配成功:指针是否=NULL
memset函数:将指针,数据元素,内存空间的值设为0
memset函数为初始化函数,可以将一段连续的内存初始化为某个值。但它是以字节为单位进行初始化的。memset函数的一般使用格式为memset(首地址或头指针,值,sizeof(地址总大小));比如对数组a赋值memset(a,0,sizeof(a))
//初始化一个线性表
SqList* ListInit()
{
SqList* L = NULL;//初始化指针
L = (SqList*)malloc(sizeof(SqList));//动态分配空间,返回一个指向这块内存的指针
if (!L)//判断空间分配是否成功
{
printf("顺序表空间分配失败!\n");
return NULL;
}
memset(L, 0x00, sizeof(SqList));//初始化线性表指针,数据,内存空间
return L;
}//返回一个头指针
三.输入
在主函数中操作
初始化表函数
依次访问结构体成员输入数值
输出函数
//赋值
int main()
{
SqList* L = ListInit();
printf("请输入顺序表的五个元素:\n");
int i = 0;
for (i = 0;i < 5;i++)
{
scanf("%d",& L->data[i]);
}
L->length = 5;
printf("打印输出当前顺序表的元素:\n");
ListTraverse(L);//输出
return 0;
}
四.输出
判断输入长度是否为0,是->返回ERROR
取出长度成员参与输出循环
返回OK
//依次输出数据元素
Status ListTraverse(SqList* L)
{
if (L->length == 0)
{
printf("这是一个空数据表\n");
return ERROR;
}
int i = 0;
for (i = 0;i < L->length;i++)
{
printf("%d ", L->data[i]);
}
return OK;
}