中易网

1、 建立线性表的(动态分配)顺序存储结构。

答案:2  悬赏:0  
解决时间 2021-04-28 09:21
  • 提问者网友:一人心
  • 2021-04-27 11:29
#define LIST_INIT_SIZE 10
#define LISTINCREMENT 2
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
typedef int Status;
typedef int ElemType;


typedef struct
{
ElemType *elem;
int length;
int listsize;
}SqList;


Status InitList(SqList *L)
{
(*L).elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!(*L).elem)
exit(OVERFLOW);
(*L).length=0;
(*L).listsize=LIST_INIT_SIZE;
return OK;
}
最佳答案
  • 二级知识专家网友:星星坠落
  • 2021-04-27 12:05
以下步骤:
一、线性表的顺序表示

用一组地址连续的存储单元依次存储线性表的数据元素。C语言中的数组即采用顺序存储方式。

2000:0001
2000:0003
2000:0005
2000:0007
2000:0009
2000:0011
2000:0013
2000:0015
2000:0017
...
2000:1001
2000:1003
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1

a[9] 1
2
3
4
5
6
7
8
9

假设线性表的每个元素需占用l个存储单元,并以所占的第一个单元的存储地址作为数据元素的存储位置。则存在如下关系:

LOC(ai+1)=LOC(ai)+l

LOC(ai)=LOC(a1)+(i-1)*l
全部回答
  • 1楼网友:冷眼_看世界
  • 2021-04-27 13:24
一:a、list_init_size是初始化时一次分配的内存大小,共100个elemtype类型 这个大小用listsize来表示 b、listincrement用于追加内存,当初始化分配的内存用完后,需用realloc函数追加, 而一次追加的内存大小就是10个elemtype类型 c、初始化分配了内存,表明这些内存可以被本程序使用,但本程序究竟使用了所分配的多大的内存, 这就是length的作用,共使用了length个elemtype类型 二、l.listsize为int类型,list_init_size是个整型数据,当然可以赋值 三、l.elem=(elemtype*)malloc(list_init_size*sizeof(elemtype));只是分配了一个大小为100个elemtype 类型的连续的内存空间,并且用指针l.elem指向这段空间的第一个elemtype, 因为是连续的 ,所以可以认为是数组l.elem[100]
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息