【2023.10.10练习】6-1 顺序表 - 3. 创建

题目描述:

定义如下线性表(顺序表)类型。

typedef struct
{
    int size, length;
    LELEMENT *element;
} ALIST;

说明:size 为动态数组的尺寸,length 为线性表的长度,element 为指示动态数组起始地址的指针。

请编写函数,创建线性表(顺序表)。

函数原型
void AListCreate(ALIST *list);

说明:参数 list 是指示线性表(顺序表)的指针。函数完成对线性表(顺序表)的初始化:分配动态数组内存空间,记录动态数组尺寸,并将线性表置为空表。

打开“线性表”项目,创建线性表(顺序表)类型的两个文件“AList.h”和“AList.c”。在这两个文件中声明线性表(顺序表)类型和相关的符号常量,并实现线性表的操作函数。

AList.h

#ifndef _AList_h_
#define _AList_h_

#include "LElement.h"

#define AListInitSize 1024
#define AListIncrement 128

typedef struct
{
    int size, length;
    LELEMENT *element;
} ALIST;

void AListCreate(ALIST *list);

#endif

说明:AListInitSize 为动态数组初始尺寸;AListIncrement 为动态数组扩容的增量。

AList.c

#include 
#include 
#include "AList.h"

/* 你提交的代码将被嵌在这里 */

在“main.c”中修改主函数进行测试。

main.c

#include 
#include 
#include "AList.h"

int main()
{
    ALIST a;
    AListCreate(&a);
    printf("%d %d %s\n", a.size, a.length, a.element ? "Valid" : "Error");
    free(a.element);
    return 0;
}
样例输入

注:无输入。

样例输出
1024 0 Valid

相关项目:实数类型。


设计重点:

这道题目主要的考点是动态内存的分配

故需要理解掌握malloc的用法:

指针自身 = (指针类型*)malloc(sizeof(指针类型)*数据数量)

	int *p = NULL;
	int n = 10;
	p = (int *)malloc(sizeof(int)*n);

题目要求函数要完成对动态数组内存空间的分配,而动态数组位于list->element,

即在该指针上分配内存。

代码为:

    list->element=(LELEMENT *)malloc(AListInitSize*sizeof(LELEMENT));

重要扩展:与此对应的是free函数

作用:释放malloc(或calloc、realloc)函数给指针变量分配的内存空间。
注意:使用后该指针变量一定要重新指向NULL,防止悬空指针(失效指针)出现,有效规避错误操作。

    free(p);
    p = NULL;


 


最终代码:

void AListCreate(ALIST *list){
    list->element=(LELEMENT *)malloc(AListInitSize*sizeof(LELEMENT));
    list->length = 0;
    list->size = AListInitSize;
}

你可能感兴趣的:(练习日志,学习,代码规范)