空順序表的實現(基於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