您的位置:首页 > 其它

第二章 线性表 2.1线性表的定义

2008-07-18 16:51 190 查看
现在开始在这个博客写文章了,马上要上大二了,可什么也没有学会,以后要多学习,多写日记,多来这里看看。觉得这样可以激励一下自己,督促自己。呵呵。。。
我写的文章烂,都自己瞎想的,有错希望大虾批评指正。^_^

第一章 绪论
都是些概念,俺看了就忘。就记住两点(不怕,俺还不用考试呢):
1,数据结构是带结构的数据
2,数据类型-数据结构和定义在这个数据结构上的一组操作的总称。

第二章 线性表
2.1线性表的定义
按着书本上的例子,动手敲了一下代码,并运行了。后来突然觉得一句话很对,那句是:程序=数据结构+算法

书上的代码都好理解,俺就不说了。说说俺的理解。
俺在调试的时候直接吧想法写在代码上了。

定义SqList结构,在程序运行中它只占了sizeof(ElemType)+sizeof(int)+sizeof(int)个字节,也就是说它不存
储数量变化的数据。只是通过成员lenth,listsize标识了一下元素集合的信息,用*elem进行了类似于C语言中下标[]的用法。
这些放到源代码中是很好理解的。别只看看书,动动手吧。

//线性表的动态分配顺序存储结构
#define LIST_INIT_SIZE 10
#define LISTINCREMENT 2
typedef int ElemType;
struct SqList //相当于数组的下标,但是含有数组的长度和容量; 只记录了数组的信息,没有数据
{
ElemType *elem; //下标0,*elem++进行移动
int length; //数组长度,为相对常量
int listsize; //指示数组所占内存,为相对常量(相对常量,偶自创,本质为变量,一般可看作变量)
}; //内存块中,指针是按ElemType类型移动的

int a[10]; 定义了一个0-9的整数数组。
对应到SqList结构中,length=10,listsize=10*sizeof(int),*elem为[i](i=0)
想到点东西,说说
int *p;
a=p[i];
有人说指针用上小标号的意思是p+i,我做了做,编译出错,不知真么回事。

写的挺杂,可别嫌乱,再说一点
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
malloc分配一块内存,大小为LIST_INIT_SIZE*sizeof(ElemType),malloc的返回值为空指针,
经过(ElemType*)强制为ElemType*型。本来申请了一块空旷的内存,经过(),它就被分
成大小相等的几块了,这时L.elem+1就有意义了,它指向了第二块内存。

到现在是不是觉得SqList结构和数组很像啊!不过SqList是动态的。

2008年7月16日

unikingest
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: