C 陣列與字串

2021-10-01 12:26:49 字數 1528 閱讀 6420

1,字串

一般的編譯器字串都是用順序儲存的。

如何表示串的長度?

方案1:用乙個變數來表示串的實際長度

方案2:在串尾儲存乙個不會在串**現的特殊字元作為串的終結符,表示串的結尾。

2,模式匹配

bf演算法(樸素模式匹配)

int bf(char s[ ], char t[ ])

kmp演算法,時間複雜度o(n+m),用多重迴圈匹配時間複雜度過高,此演算法避免回溯,i不移動,j>=0繼續向後移,從該位置開始與i進行比較。主串:在哪兒失敗在哪開始。子串:從有開始最大滑動距離(記錄在陣列k裡)

void compute_next(char t, int next)

}int kmp_findpat(char *s, char *t,int *next)

else

j=next[j];

}if(t[j]』\0』)

return i-j;

else

return -1;

}3,多維陣列(下標問題)

(多維)陣列——線性表中的資料元素可以是線性表,但所有元素的型別相同。

廣義表——線性表中的資料元素可以是線性表,且元素的型別可以不相同。

行優先儲存二維陣列的一維陣列定址

aij前面的元素個數

=整行數×每行元素個數+本行中aij前面的元素個數

=(i -l1)×(h2 -l2+1)+(j -l2)

列優先儲存二維陣列的一維陣列定址

設陣列開始存放位置 loc( 0, 0 ) = a,

每個元素占用 l 個儲存單元

loc ( i, j ) = a + ( j *n +i ) * l

4,特殊矩陣

特殊矩陣:矩陣中很多值相同的元素並且它們的分布有一定的規律。

稀疏矩陣:矩陣中有很多零元素。

壓縮儲存的基本思想是:

⑴ 為多個值相同的元素只分配乙個儲存空間;

⑵ 對零元素不分配儲存空間。

對稱矩陣的壓縮

對於下三角中的元素aij(i≥j), 在一維陣列中的下標k與i、j的關係為:

k=i×(i-1)/2+j-1 。

上三角中的元素aij(i<j),因為aij=aji,則訪問和它對應的元素aji即可,即:

k=j×(j-1)/2+i -1。

5,廣義表

n廣義表(列表):  n ( ³ 0 )個表元素組成的有限序列,記作:

ls = (a0, a1, a2, …, an-1)

ls是表名,ai是表元素,它可以是表 (稱為子表),可以是資料元素(稱為原子)。

n為表的長度。n = 0 的廣義表為空表。

長度:廣義表ls中的直接元素的個數;

深度:廣義表ls中括號的最大巢狀層數。算括號數量

ø廣義表的成分可以是單元素,也可以是有結構的表

ø線性表是一種特殊的廣義表

ø廣義表不一定是線性表,也不一定是線性結構

表頭:廣義表ls非空時,稱第乙個元素為ls的表頭;

表尾:廣義表ls中除表頭外其餘元素組成的廣義表(一定是子表或空)

c 字元陣列與字串

一 定義 字元陣列 儲存字元的陣列 字串 是使用最頻繁的字元陣列,是乙個特殊的字元陣列。c 中並沒有專門的字串的型別,乙個字串實際上就是乙個字元陣列,與普通字元陣列不同的是,字串的結尾有乙個字元 0,表示字串的結束。char 可以定義字元陣列,也可以定義字串。字串實際上是使用 null 字元 0 終...

C陣列與字串

所謂陣列,就是按照一定的順序排列,具有某種相同性質的同型別變數的集合。這些變數具有相同的名字和資料型別。陣列中的各資料項稱為陣列元素,用陣列名和下標名表示。定義一維陣列的形式為 資料型別 陣列名 整形常量表示式 說明 資料型別是陣列中全體陣列元素的資料型別。陣列名用識別符號表示,整形常量表示式代表陣...

C 字串指標與字串陣列

在做面試100題中第21題時,發現char astr abcdefghijk 0 和char astr 有點區別,以前一直以為是一樣的,但是在該程式中採用字串指標執行一直出錯。後來在網上查查,果然發現大大的不同。分析 當你需要修改字串時,採用指標指向該字串編譯通過但是執行出錯,而採用字串陣列時不會出...