資料結構之 串

2022-03-14 13:17:22 字數 1582 閱讀 7043

今天寫一下串這個結構

串是字串的簡稱,是一種特殊的線性表,是處理非數值計算問題的主要物件。串也是非常有用的,我們非常熟悉和非常有名的編輯器vim也主要是在倒騰串。

串也有多種儲存結構,包括:順序儲存結構,堆儲存結構,和鏈式儲存結構。

順序儲存結構的實現就比較簡單了,就是乙個定義乙個大小固定的字元陣列,當然它的劣勢也是很明顯的,因為串的大小是非常不固定的,所以事先定義

乙個很大的陣列的話無非會導致一些記憶體空間的利用率非常底下,浪費嚴重。

堆結構就是隨時分配空間,用完再釋放掉,基本不會造成浪費,是我最喜歡的結構。主要用到malloc()函式和realloc()函式。

鏈式儲存結構就是乙個字元型別的鍊錶,咋說呢,不好也不壞,還行吧。

今天我寫乙個堆結構的串。

先來總結一下串應該有的操作:

1.初始化串

2.求串長

3.取子串

4.格式化遍歷(列印)串

5.定位串(查詢某一子串是否存在)

6.串了連線

7.串比較

8.判串空(我們不單獨實現它,而是通過求串長來實現)

9.串替換

10.串賦值

11.串插入

12.串刪除

大家也能看出來,串是可以整出很多花招的

我只實現串的部分操作

定義串結構

/*

define a string

*/

const int linelength = 50;

struct

string

;

1.初始化串

/*

init_string

*/int init_string( struct

string *s,char *str )

s->ch[s->length] = *temp_str ++;

s->length ++;

}s->ch[s->length] = '\0'

; return1;

}

2.求串長

/*

getting string length

*/int get_str_len(struct

string *s)

4.格式化遍歷(列印)串

/*

print string

*/int print_ch( struct

string *s)

if( cnt % linelength == 0

)else

};cnt ++;

if( *p != '\n'

) }

putchar('\n

');for( cnt=0;cnt10;cnt++)

return1;

}

我這個打列印串的函式是按照一定格式輸出的,帶有行號輸出

我從cnn上面摘抄了一段支援普朗特的新聞測試了一下

其它的功能今天沒時間寫了。。。

資料結構之串

串string 由零個或多個字元組成的有限序列,又名叫字串 串的比較是通過組成串的字元之間的編碼來進行比較的,而字元的編碼指的是字元在對應的字符集中的序號 ascii是american standard code for information interchange縮寫 常用字元標準ascii編碼...

資料結構之串

串由零個或多個字元組成的有限序列,又名叫字串。串中字元數目n是成為串的長度,零個字元的串稱為空串。adt 串 string data 串中元素僅由乙個字元組成,相鄰元素具有前驅和後繼關係。operation strassign t,chars 生成乙個其值等於字串常量chars的串t。strcopy...

資料結構之串

定義 1 串是由零個或多個字元組成的有限序列,又名叫字串。2 字串簡稱串,是一種特殊的線性表,它的資料元素僅由乙個字元組成。概念 1 長度 串中字元的個數,稱為串的長度。2 空串 長度為零的字串稱為空串。3 空格串 由乙個或多個連續空格組成的串稱為空格串。4 串相等 兩個串相等,是指兩個串的長度相等...