串 C語言簡單實現

2021-10-24 22:44:33 字數 2533 閱讀 7422

本文參考自《大話資料結構》

串是由零個或多個字元組成的有限序列,又名叫字串。

adt 串(string)

data

串中元素僅由乙個字元組成,相鄰元素具有前驅和後繼關係。

operation

strassign(t,*chars):生成乙個其值等於字串常量chars的串t

strcopy(t,s):串s存在,由串s複製得串t

clearstring(s):串s存在,將串清空

stringempty(s):若串s為空,返回true,否則返回false

strlength(s):返回串s的元素個數,即串的長度

strcompare(s,t):若s>t,返回值》0,若s=t,返回0,若s/* t為非空串,若主串s中第pos個字元之後存在與t相等的子串,則返回第乙個這樣的子串在s中的位置,否則返回0 */

intindex

(string s, string t,

int pos)

}return0;

//若無子串與t相等,返回0

}

#include

#include

#include

#define error 0

#define ok 1

#define maxsize 10000

typedef

int status;

struct string

;/* 生成乙個值等於字串常量chars的串t */

string strassign

(char

* chars)

/* 字串拷貝 */

status strcopy

(string* t, string* s)

/*如果串存在,將串清空*/

status clearstring

(string* s)

/* 若串s為空,返回true,否則返回false */

bool stringempty

(string* s)

/* 返回串s的元素個數,即串的長度 */

intstrlength

(string* s)

/* 若s>t,返回值》0,若s=t,返回0,若sint

strcompare

(string* s, string* t)

return0;

}/* 用t返回由s1和s2聯接而成的新串 */

status concat

(string* t, string* s1, string* s2)

/* 串s存在,1<=pos<=strlength(s),且0<=len<=strlength(s)-pos+1,用sub返回串s的第pos個字元起長度為len的子串 */

status substring

(string* sub, string* s,

int pos,

int len)

sub->length = len;

return ok;

}/* 串s和t存在,t是非空串,1<=pos<=strlength(s)。

若主串s中存在和串t值相同的子串,

則返回它在主串s中第pos個字元之後第一次出現的位置,

否則返回0 */

intindex

(string* s, string* t,

int pos)

if(j == t->length)

break;}

if(i != s->length-t->length)

return i+1;

}/* 串s、t和v存在,t是非空串。用v替換主串s**現的所有與t相等的不重疊的子串 */

status replace

(string* s, string* t, string* v)

if(j == t->length)

}else

}for

(;ilength;i++

)for

(i=0

;i) s->length = k-1;

return ok;

}/* 串s和t存在,1<=pos<=strlength(s)+1。在串s的第pos個字元之前插入串t */

status strinsert

(string* s,

int pos, string* t)

for(j=

0;j) s->length = s->length+t->length;

return ok;

}/* 串s存在,1<=pos<=strlength(s)-len+1。從串s中刪除第pos個字元起長度為len的子串 */

status strdelete

(string* s,

int pos,

int len)

s->length-

=len;

return ok;

}

關鍵路徑 C語言簡單實現

本文參考自 大話資料結構 對關鍵路徑的理解參考自 在乙個表示工程的帶權有向圖中,用頂點表示事件,用有向邊表示活動,用邊上的權值表示活動的持續時間,這種有向圖的邊表示活動的網,我們稱之為aoe網。我們把aoe網中沒有入邊的頂點稱為始點或源點,沒有出邊的頂點稱為終點或匯點。儘管aoe網和aov網都是用來...

C 語言單鏈表的實現(簡單實現)

簡單的實現單鏈表的增刪遍歷操作,還有一些功能需要實現。我感覺難理解的時候畫圖來搞清楚邏輯,先畫個圖比劃就行。author gong single linked list 增 刪 遍歷 include include 從新定義節點的資料域資料型別,以後好修改具體的鍊錶 typedef int data...

力扣125 驗證回文串 C語言實現 簡單題

傳送門 給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true 示例 2 輸入 race a car 輸出 false bool ispalin...