second60 20180422
串,即字串,是由零個或多個字元組成的有限序列。
空串:沒有字元。
串長:字元的個數。
adt string
資料物件:
d=資料關係:
r=基本運算:
strassign(&s, cstr): 賦值
strcopy(&s, t): 複製
strequal(s,t): 比較
strlength(s): 串長
concat(s, t): 串連線
substr(s,i,j): 求子串
insstr(s1,i,s2): 插入
delstr(s,i,j): 刪除
repstr(s,i,j,t): 替換
dispstr(s): 列印
}adt string
typedef struct
sqstring;
演算法**如下,c語言實現:
#include "stdio.h"
#define maxsize 1024
typedef int elemtype;
typedef struct
sqstring;
void strassign(sqstring *s,char cstr)
else
}s->len = i;
}void strcopy(sqstring *s,sqstring *t)
s->len = t->len;
}int strequal(sqstring *s,sqstring *t)}}
return result;
}int strlength(sqstring *s)
/*這裡沒有判斷字串超過maxsize情況
現實專案中必須判斷
*/sqstring concat(sqstring *s,sqstring *t)
sqstring substring(sqstring *s,int i ,int j)
sqstring insstr(sqstring *s1, int i, sqstring *s2)
sqstring delstr(sqstring *s,int i,int j)
sqstring repstr(sqstring *s,int i,int j, sqstring *t)
void dispstr(sqstring *s)
printf("\n");}}
鏈串與一般鍊錶類似。主要區別在於,鏈串的乙個結點,可以儲存乙個或多個字元。
以結點大小為1,資料型別定義
typedef struct snode
listring;
演算法實現,c語言:
因為跟鍊錶型別,這裡就不在實現**,原理也就是鍊錶與鍊錶間的操作,參考鍊錶實現
後面有時間再補上**
字串,可以說是程式中,最重要的資料結構之一。因為無論什麼語言,還是最後的底層邏輯,很多都會轉到最後,為字串的操作。
在學習c++時,很常用的,就是
std::string
,但不少人只知道字串,但產不了解字串的原理,本文的內容,講的串,其實就是字串的原理及在順序和鍊錶中的實現。學習後會對字串有深刻的了解,而不僅僅停留在使用
std:string
中。簡單地說,字串,其實就是一串char型別的陣列,或鍊錶。
(注:**中可能有些少了判斷空指標或少了某些條件,時間比較倉促,如果你拿**去用,記得一定要補上那些條件,見諒)
資料結構 C語言實現串
include stdlib.h include stdio.h define true 1 define false 0 define maxlen 255 typedef int status typedef structstring 串的賦值 void strassign string s,c...
資料結構 串(C語言實現)
一.串的定義 串是由零個或者多個字元組成的有限序列。串中任意連續的字元組成的子串行稱為該串的字串,包含字串的串稱為主串。在c語言中,串可以使用如下語句定義 char str hello world 上面的串裡面一共有12個字元,但是編譯器以 0 作為字串結束標誌,所以陣列str的長度為13,串str...
簡述 資料結構 線性表 c語言實現
second60 20180422 線性表是具有相同特性的資料元素的乙個有限序列。adt list 資料物件 d 資料關係 r 基本運算 initlist l 初始化線性表 destroylist l 銷毀線性表 listempty l 線性表是為空 listlength l 線性表的長度 disp...