一、數(shù)據(jù)結(jié)構(gòu)sqlist和seqlist的區(qū)別
sqlist是函數(shù)的名稱,seqlist是一種類型,動態(tài)分配數(shù)組順序表的類型。
sqlist為靜態(tài)分配
#define MaxSize 50????????????? //數(shù)組的大小固定為50
typedef int ElemType;?????????? //把int重命名為ElemType,方便修改數(shù)據(jù)類型
typedef struct SqList?????????? //定義了一個結(jié)構(gòu)體
{
??? ElemType data[MaxSize]; //數(shù)組的長度固定為MaxSize
??? int length;???????????? //數(shù)組的當前長度
}SqList;
seqlist為動態(tài)分配
#define InitSize 50?????????? //初始長度
typedef int ElemType;???????? //把int重命名為ElemType,方便修改數(shù)據(jù)類型
typedef struct SeqList??????? //定義了一個結(jié)構(gòu)體
{
??? ElemType *data;?????? //指示動態(tài)分配數(shù)組的指針
??? int MaxSize, length;? //最大長度和當前長度
}SeqList;
這兩個數(shù)據(jù)結(jié)構(gòu)都是線性表,線性表(linear list)是n個具有相同特性的數(shù)據(jù)元素的有限序列。 線性表是一種在實際中廣泛使用的數(shù)據(jù)結(jié)
構(gòu),常見的線性表:順序表、鏈表、棧、隊列、字符串…
線性表在邏輯上是線性結(jié)構(gòu),也就說是連續(xù)的一條直線。但是在物理結(jié)構(gòu)上并不一定是連續(xù)的,線性表在物理上存儲時,通常以數(shù)組和鏈式結(jié)構(gòu)的形式存儲。
延伸閱讀:
二、為什么要用SQList
SQList是順序鏈表,屬于鏈表類型,輕量級數(shù)據(jù)存儲,方便增、刪、改、查。
1.SQLite數(shù)據(jù)庫存儲是安卓系統(tǒng)提供的存儲方式之一
2.SQLite是專為嵌入式設(shè)備設(shè)計的一款輕量級數(shù)據(jù)庫
3.SQLite占用資源非常低,在嵌入式設(shè)備中,只需要幾百kb的內(nèi)存
4.SQLite支持標準的SQL語句,遵循數(shù)據(jù)庫的ACID失誤
5.SQLite不需要安裝,不需要用戶名密碼就能使用
要用SQList的原因
1.SharedPreferences是以xml形式儲存數(shù)據(jù)的,只適合儲存基本類型的數(shù)據(jù)
2.文件儲存的內(nèi)容在提取(解析)數(shù)據(jù)時,相對復(fù)雜
3.當數(shù)據(jù)量大、結(jié)構(gòu)復(fù)雜時,如果使用SharedPreferences和文件儲存對數(shù)據(jù)的操作將變得非常復(fù)雜,容易出錯,效率低下,Android提供了SQLite數(shù)據(jù)存貯,幫助我們解決這些問題