为了账号安全,请及时绑定邮箱和手机立即绑定

数据结构中的线性表的初始化操作是什麽?

数据结构中的线性表的初始化操作是什麽?

喵喔喔 2018-11-28 09:01:38
数据结构中的线性表的初始化操作是什麽?
查看完整描述

1 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

 初始化就是建立一个空线性表,那直接把长度置为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,线性表的初始化就这么简单。



查看完整回答
反对 回复 2018-12-20
  • 1 回答
  • 0 关注
  • 1057 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信