今天寫一下串這個結構
串是字串的簡稱,是一種特殊的線性表,是處理非數值計算問題的主要物件。串也是非常有用的,我們非常熟悉和非常有名的編輯器vim也主要是在倒騰串。
串也有多種儲存結構,包括:順序儲存結構,堆儲存結構,和鏈式儲存結構。
順序儲存結構的實現就比較簡單了,就是乙個定義乙個大小固定的字元陣列,當然它的劣勢也是很明顯的,因為串的大小是非常不固定的,所以事先定義
乙個很大的陣列的話無非會導致一些記憶體空間的利用率非常底下,浪費嚴重。
堆結構就是隨時分配空間,用完再釋放掉,基本不會造成浪費,是我最喜歡的結構。主要用到malloc()函式和realloc()函式。
鏈式儲存結構就是乙個字元型別的鍊錶,咋說呢,不好也不壞,還行吧。
今天我寫乙個堆結構的串。
先來總結一下串應該有的操作:
1.初始化串
2.求串長
3.取子串
4.格式化遍歷(列印)串
5.定位串(查詢某一子串是否存在)
6.串了連線
7.串比較
8.判串空(我們不單獨實現它,而是通過求串長來實現)
9.串替換
10.串賦值
11.串插入
12.串刪除
大家也能看出來,串是可以整出很多花招的
我只實現串的部分操作
定義串結構
/*const int linelength = 50;define a string
*/
struct1.初始化串string
;
/*2.求串長init_string
*/int init_string( struct
string *s,char *str )
s->ch[s->length] = *temp_str ++;
s->length ++;
}s->ch[s->length] = '\0'
; return1;
}
/*4.格式化遍歷(列印)串getting string length
*/int get_str_len(struct
string *s)
/*我這個打列印串的函式是按照一定格式輸出的,帶有行號輸出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 串相等 兩個串相等,是指兩個串的長度相等...