数据结构中的线性表的初始化操作是什麽?
2个回答
展开全部
初始化就是建立一个空线性表,那直接把长度置为0就行了。
1 /* 初始化顺序线性表 */
2 Status InitList(SqList *L)
3 {
4 L->length=0;
5 return OK;
6 }
因为要初始化,要对线性表本身进行操作,所以不能用值传递。值传递不会改变实参的值嘛。地址传递的话呢,实际上在函数内部执行了这么一个操作:L = &L. 所以操作函数内部的L,也就相当于操作外部的线性表L。其实地址传递也是值传递。不过这个值是地址而已。
就是说,需要修改表的就传指针,不需要修改表的传值就行了。那补上一个完整的可运行的程序。
01 #include "stdio.h"
02
03 #define OK 1
04 #define ERROR 0
05 #define TRUE 1
06 #define FALSE 0
07
08 #define MAXSIZE 20 /* 存储空间初始分配量 */
09 typedef int ElemType; /* ElemType类型根据实际情况而定,这里假设为int */
10 typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
11
12 typedef struct
13 {
14 ElemType data[MAXSIZE]; /* 数组,存储数据元素 */
15 int length; /* 线性表当前长度 */
16 }SqList;
17
18 /* 初始化顺序线性表 */
19 Status InitList(SqList *L)
20 {
21 L->length=0;
22 return OK;
23 }
24
25 int main()
26 {
27 SqList L;
28 ElemType e;
29 Status i;
30
31 i=InitList(&L);
32 printf("初始化L后:L.length=%d\n",L.length);
33 }
程序运行结果:
1 初始化L后:L.length=0
2
3 Process returned 22 (0x16) execution time : 0.072 s
4 Press any key to continue.
有个问题,在函数内部 L->length=0; 使用箭头,而在外面调用的时候 L.length 却用实心点,两者有啥区别吗?
这个很基础嘛。。。在函数内部,传递的参数是 *L,那么L就是指针。指针需要用->指向成员。而在外部的L是实体对象,实体对象则用实心点来指向成员嘛。
OK,线性表的初始化就这么简单。
1 /* 初始化顺序线性表 */
2 Status InitList(SqList *L)
3 {
4 L->length=0;
5 return OK;
6 }
因为要初始化,要对线性表本身进行操作,所以不能用值传递。值传递不会改变实参的值嘛。地址传递的话呢,实际上在函数内部执行了这么一个操作:L = &L. 所以操作函数内部的L,也就相当于操作外部的线性表L。其实地址传递也是值传递。不过这个值是地址而已。
就是说,需要修改表的就传指针,不需要修改表的传值就行了。那补上一个完整的可运行的程序。
01 #include "stdio.h"
02
03 #define OK 1
04 #define ERROR 0
05 #define TRUE 1
06 #define FALSE 0
07
08 #define MAXSIZE 20 /* 存储空间初始分配量 */
09 typedef int ElemType; /* ElemType类型根据实际情况而定,这里假设为int */
10 typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
11
12 typedef struct
13 {
14 ElemType data[MAXSIZE]; /* 数组,存储数据元素 */
15 int length; /* 线性表当前长度 */
16 }SqList;
17
18 /* 初始化顺序线性表 */
19 Status InitList(SqList *L)
20 {
21 L->length=0;
22 return OK;
23 }
24
25 int main()
26 {
27 SqList L;
28 ElemType e;
29 Status i;
30
31 i=InitList(&L);
32 printf("初始化L后:L.length=%d\n",L.length);
33 }
程序运行结果:
1 初始化L后:L.length=0
2
3 Process returned 22 (0x16) execution time : 0.072 s
4 Press any key to continue.
有个问题,在函数内部 L->length=0; 使用箭头,而在外面调用的时候 L.length 却用实心点,两者有啥区别吗?
这个很基础嘛。。。在函数内部,传递的参数是 *L,那么L就是指针。指针需要用->指向成员。而在外部的L是实体对象,实体对象则用实心点来指向成员嘛。
OK,线性表的初始化就这么简单。
Sievers分析仪
2025-01-06 广告
2025-01-06 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准...
点击进入详情页
本回答由Sievers分析仪提供
展开全部
Status init_list(CmcLinearList &io_c_l, int listsize/*=LIST_INIT_SIZE*/)
//构造一个空链表,成功返回OK
{
if (listsize<=0)
listsize = LIST_INIT_SIZE;
io_c_l.elem = (ElemType*)malloc(sizeof(ElemType) * LIST_INIT_SIZE);
if (io_c_l.elem==NULL)
return ERROR;
io_c_l.length = 0;
io_c_l.listsize = listsize;
return OK;
}
主要是分配对应的空间
//构造一个空链表,成功返回OK
{
if (listsize<=0)
listsize = LIST_INIT_SIZE;
io_c_l.elem = (ElemType*)malloc(sizeof(ElemType) * LIST_INIT_SIZE);
if (io_c_l.elem==NULL)
return ERROR;
io_c_l.length = 0;
io_c_l.listsize = listsize;
return OK;
}
主要是分配对应的空间
更多追问追答
追问
线性表的定义和初始化有什麽区别啊
追答
定义是指
class CmcLinearList
{
public:
ElemType *elem; //储存空间基址
int length; //当前长度
int listsize; //当前分配的容量
friend Status operator==(CmcLinearList a, CmcLinearList b);
//重载比较运算符,相等返回TRUE,否则返回FALSE
//注意:不一定是每一位对应相等
};
说明线性表的这种结构体包含什么东西
初始化时针对它的一个实例,进行使用前的分配内存和初始化变量
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |