永发信息网

线性表动态分配顺序储存结构的几个问题

答案:1  悬赏:20  手机版
解决时间 2021-03-07 03:12
线性表动态分配顺序储存结构的几个问题
最佳答案
有三个问题:
(1)typedef int ElemType;在这里是什么含义,有什么用途,应该可以省去的吧?
不能省略,这是类型定义 有了此举 ElemType 就相当于 int
如省略,此句则报错 ElemType *elem;

(2)if(!L->elem)是什么含义,它和if(L->item==NULL)是等价的,但为什么写成这样if(!L->elem)?
一般来说 NULL都回定义成
#define NULL 0
NULL就是0
所以如果L->elem=NULL=0
则!L->elem=1;

(3)这段数据结构的算法是严蔚敏版的,但李春葆版却是:
typedef struct
{
ElemType data[MaxSize];
int length;
}SqList;
void InitList(SqList *&L)
{
L=(SqList *)malloc(sizeof(SqList));
L->length=0;
}
两种算法最大的差异:李版的在初始化线性表时没有分配存储容量,以及在构造线性表时返回值类型为void型,这样可以吗?为什么?

李版在初始化的时候给分配了啊
L=(SqList *)malloc(sizeof(SqList)); 这句就是给链表分配存储容量,且他的元素个数是由数组data[MaxSize]的个数决定的,也就是MaxSize相当于 严版中的 LIST_INIT_SIZE

void 型可以,因为此时通过指针已经指向量表了
如 初始化调用
Sqlist *List
InitList(List)
这就生成了一张空表,同时List 是指向该表的指针
则该List和初始化函数 initList程序体中的L 是同名的,通过这样就建立连接。
严蔚敏版中返回 OK 只是一个链表建立成功的标志,而在李版里没有返回这样一个标志而已。

对于补充问题的回答
L是指向链表的一个指针,
而一个链表的结构由你的定义可知
typedef struct
{
ElemType *elem;
int length;
int listsize;
}
所以一个链表有三个成员
elem 链表存放数据的首地址
length 链表长度
listsize 链表占用的字节数
因此
L->length就可以得到链表的长度
L->listsize 就可以得到链表占用的字节数
L->elem就可以得到链表存放数据的首地址
继续看初始化函数
int InitList(SqList &L)
{
L->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
如果这句话成功了,就会gei链表分配一块LIST_INIT_SIZE*sizeof(ElemType)的存储空间,并把这快存储区域的首地址给 L-〉elem
如果分配内存空间不成功,L-〉elem就得不到任何数据,即为0,因此下一句就可以给出异常处理了
if(!L->elem) exit(OVERFLOW);
L->length=0;
L->listsize=LIST_INIT_SIZE;
return OK;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有没有人知道广州哪家主题酒店比较适合情侣入
长红装饰地址在什么地方,想过去办事
百度云如何备份视频
/d/和/t/的发音到底怎么读stay的音标是/steI/
华为c8817d打开图库很卡
吕宁,,男.求个英文名,要求谐音.谢了,!
古墓丽影崛起和刺客信条枭雄那个更有可玩性?
临泉二中扛霸是谁?有多厉害?
G1/X148(路口)地址有知道的么?有点事想过去
舌苔花剥而兼有白腻苔,多属A.胃之气阴两亏B.
鹏达布艺怎么去啊,有知道地址的么
问路:从厦门海沧区到厦门软件园坐几路公交车
如图是一个几何体的三视图,其中正视图和侧视
魏老香鸡火锅(恒大城店)地址在什么地方,想过
DNF里的时装怎么才能销毁?
推荐资讯
半条命2怎么在游戏设置中文
女朋友大姨妈来了说肚子疼我不跟她在一起我该
我早餐吃了蛋和牛奶用英语造句
脉可以换什么偏旁
如何从山西省地方税务局申报系统申报企业所得
河流的幸福
嘉和·世纪华庭在什么地方啊,我要过去处理事
幼小植物体内自由水与结合水的比值不断增大时
福记手撕面菜馆怎么去啊,有知道地址的么
福建沙县小吃做法
七一去博物馆了解《红色革命》作文100字
linux下块设备的RM值如何修改,比如从0修改为
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?