这个是临时写的吧,后边改成了int了
Elem代表相应的数据类型,应该按照实际的数据类型改为int或者Coordinate
这些源码网上有,编译器自带C++线性表的头文件好像叫<list>,用ctrl+左键点进去看代码也行
我改成引用了,没发现问题。
已解决
我的理解是这样的:
因为即使有的位置没有赋值,但还算线性表的内容,只不过它们的内容为空值,但它们仍然是有索引的.
这里i的作用只是要它满足线性表的索引即可,如果写成i<m_iLength,可能程序运行并没有问题,但是从逻辑上讲i并没有遍历到所有的线性表索引,这个循环是不完整的.
Elem *e 是传入地址值,e的值发生在函数体内改变后会将原来的值同时改变,目的为了返回e的值
例:
void swap(int a,int b){ int t=a; a=b; b=t; } void swap2(int *a,int *b){ int t=*a; *a=*b; *b=t; } int main(){ int a=2,b=3; swap(a,b); // a=2 b=3 (ab的值未发生改变) swap2(&a,&b); // a=3 b=2 (ab以完成交换) }
用类实现时,这个位置可以写成this指针,而this指针可以省略。
可以看这个老师的远征系列,里面有说。
是用来获取第i位置上的元素的
visual studio
这个就看个人习惯了吧~
老哥,这标题不明明白白写的么?数据结构。数据结构不是计算机最基础的课程么?
实际做开发都是这样写的,分文件写比较规范。
不用改,因为把m_pList[i]赋值给*e,指针e指向地址中对象的值就变成了m_pList[i],外部就可以通过传入的指针访问该对象的值,也就是m_pList[i]。
链表第0个是头,元素从1算起。
可以的,只要函数定义的时候参数形式对应就好。
elem是单词element(元素)的缩写,在程序定义中代表某一不确定的类型,也就是抽象的数据类型
为了使程序可读性强,并且便于修改,让elem代表多种的数据类型
也就是为int、char等等的数据类型,起了一个别名
在头文件中定义:typedef char elem; /* 抽象元素类型为char类型,这样定义之后,下面的程序中elem所定义的元素就是char类型的了 */
如果需要修改其类型,直接修改char到其他类型,elem便又代表了所修改的类型数据,这也是方便性的体现。
size是容量,表示最多能存的数量;length是长度,已经存了多少数量。
Lish.h 头文件里面放声明 ,具体的定义放在 List.cpp 里面。 List.cpp包含 List.h头文件
因为在c语言中没有对象这个东西,函数和数据是独立的,函数要处理List *list,肯定要作为参数传进来,才能知道函数要处理的是List *list,c++里面这个函数是对象的成员函数,要处理的就是对象本身的数据,可以省略,也可以传入*this