資料結構 串(串的順序儲存和塊鏈儲存)

2021-10-09 11:37:00 字數 1371 閱讀 6144

一、串的定義

二、串的儲存結構

1.串的順序儲存結構

2.串的定長順序儲存及運算

3.串的塊鏈儲存結構

串(字串)是一種特殊的線性表,它的資料元素僅有乙個字元組成。一般情況下處理的非數值型資料物件經常是字串資料,例如在事務處理中,顧客的姓名、位址、貨物產地等,一般都作為字串處理。通常以「串的整體」作為處理物件。

串的定義:

串(string)是由零個或多個任意字元組成的字串行。

通常記為:s="a1,a2,a3,...,an"

空格串:由乙個或多個空格組成的串。

子串與主串:串中任意連續的字元組成的子串行稱為該串的子串。包含子串的串稱為主串。

子串的位置 :子串的第乙個字元在主串中的序號。

串相等:兩個串的長度相等且對應位置的字元相同。

串的順序儲存結構是用一組位址連續的儲存單元來儲存字串行的。按照預定義的大小,為每個定義的串變數分配乙個固定長度的儲存區。一般用定長陣列來定義。

串的實際長度可以在預定義長度的範圍內隨意,超出預定義長度的串值則會被捨棄,稱之為「截斷」。 

/*定義方法1*/

#define maxsize 255

typedef char sstring[maxsize+1];//0號單元存放串的長度

//定義方法2

/*typedef struct

seqstring;

seqstring s;

*//*串連線*/

/*假設s1,s2,t都是sstring型的串變數,串t是由串s1聯結串s2得到。

基於s1和s2長度的不同情況,串t可能有3種情況:

(1)s1[0]+s2[0]=maxsize,則s2被部分截斷

(3)s1[0]>=maxsize,則只包含s1

*/int concat(sstring &t,sstring s1,sstring s2)

chunk;

typedef structlstring;

一般情況下,對串進行操作時,只需要從頭到尾順序掃瞄即可,對串值不必建立雙向鍊錶。

設尾指標的目的是為了方便進行聯結操作,但應注意聯結時需要處理第乙個串尾的無效字元。 

儲存密度:

串的塊鏈儲存結構

c4 3.h 串的塊鏈儲存結構 見圖4.7 define chunk size 4 可由使用者定義的塊大小 圖48 是根據c4 3.h 定義的串 abcdefghi 的一種可能的儲存形式 作為 填補空餘的字元,不計為串的字元 bo4 3.cpp 串採用塊鏈儲存結構 由c4 3.h定義 的基本操作 1...

資料結構 棧的順序儲存結構

什麼是棧?簡單的說是乙個後進先出的表,類似於彈夾,後入的子彈先打出來。下面是棧的一些具體操作步驟 首先是棧的結構定義 typedef int selemtype typedef struct sqstack,sq 棧的初始化 建立操作 sq initstack sq s s top 1 printf...

資料結構儲存的順序和鏈式對比

資料結構按邏輯結構可以分為集合 線性結構 非線性結構 按儲存結構可以劃分為順序 鏈式 索引 雜湊儲存結構。下面主要區分一下順序和鏈式儲存的優缺點,這是軟考的知識點,分析記憶一下 儲存密度 順序儲存結構是乙個乙個挨著,基本上是乙個空間對應乙個資料 而鏈式儲存由於每個結點都含有指標區域,故儲存空間占用比...