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