空顺序表的实现(基于c语言)


书中对于创建一个空线性表的定义如下:

struct SeqList{
int MAXNUM;    //    顺序表中最大元素的个数(也就是最多多少个元素),(其实MAXNUM也可以定义在外面)
int n;    // 存放线性表中元素的个数 (n<=MAXNUM)
DataType *element;    //存放线性表的元素,element[0],element[1]...
                                 //后续要给这个指针分配一个连续的区域
};
typedef struct SeqList * PSeqList;
//为使用方便,定义一个SeqList类型的指针类型
 1 PSeqList createNullList_seq(int m){  
 2     PSeqList palist = (PSeqList)malloc(sizeof(struct SeqList));
 3     if (palist != NULL){
 4         palist->element = (DataType*)malloc(sizeof(DataType)*m);
 5         if ( palist -> element){
 6             palist -> MAXNUM = m;
 7             palist -> n = 0;
 8             return palist;
 9         }
10         else    free(palist);        
11     }
12     printf("OUT OF SPACE!!");
13     return NULL;               
14 }    

对上述函数的一个理解:返回值是一个指向SeqList结构的一个指针;

           传入的数据是指打算存放数据元素的个数;

           然后第一步操作是定义一个指向SeqList结构的指针,并为其分配了一块区域(存放一个SeqList结构大小),通过 -> 访问里面的数据;

             然后判断了是否能找到这样大的区域,如果没有则返回NULL,因此以NULL作为判断条件,如果为NULL,就可以直接结束了;

           然后为element指针分配区域,要用到传入的参数,返回一个可以装m个DataType类型大小的连续区域;

           然后是以palist->element为判断条件,(这里可以这样理解,就是palist->element表示的是一个地址,但是如果内存不够等其他情况,返回NULL,也相当于是false,如果为NULL的话,就是第一次可以分配成功,第二次未成功,那不要忘记把第一次分配的给free),如果成功的话,就对MAXNUM赋值m,也就是最多有m个元素,初始化n的值为0(n表示线性表中已经存放的元素的个数);

             结束之后,返回得到的这样一个指针。

 

 

看完第一个方法,还可以理解,主要是c指针,结构,数组相关的,后续会更新。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM