串的表示和實現

2021-08-05 22:58:20 字數 2829 閱讀 3950

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

串的順序儲存結構:用一組位址連續的儲存單元來儲存串中的字串行。規定在串值後面加乙個不計入串長度的結束標記字元,為』\0』。

串的表示和實現如下:

"mystring.h"

#pragma once

#define maxsize 100

typedef

struct

string;

//生成乙個其值等於字串常量ch串t

void strassign(string *t,const

char *ch);

//串s存在,由串s複製得到串t

void strcopy(string *t,string s);

//串s存在,將串清空

void clearstring(string *s);

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

bool stringempty(string s);

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

int strlength(string s);

//若s>t,返回值》0,若s=t,返回值=0,若sint strcompare(string s1,string s2);

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

void concat(string *t,string s1,string s2);

//串s存在,1<=pos<=strlength(s),且0<=len<=strlength(s)-pos+1,

//用sub返回s的第pos個字元起長度為len的子串

void substring(string *sub,string s,int pos,int len);

//串s和t存在,t為非空串,1<=pos<=strlength(s)

//若主串s中存在和串t值相同的子串,則返回它在主串s中第pos個字元之後第一次出現的位置,否則返回0

void index(string s,string t,int *pos);

//串s、t和v存在,t為非空串。用v替代主串s中出現的所有與t相等的不重疊的子串

void replace(string *s,string t,string v);

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

void strinsert(string *s,int pos,string t);

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

void strdelete(string *s,int pos,int len);

"mystring.cpp"

#include "mystring.h"

#include #include

//生成乙個其值等於字串常量ch串t

void strassign(string *t,const

char *ch)

t->str[i] = 0;

}//串s存在,由串s複製得到串t

void strcopy(string *t,string s)

t->str[i] = 0;

}//串s存在,將串清空

void clearstring(string *s)

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

bool stringempty(string s)

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

int strlength(string s)

//若s>t,返回值》0,若s=t,返回值=0,若sint strcompare(string s1,string s2)

i++;

}return s1.str[i] - s2.str[i];

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

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

int j = 0;

while (s2.str[j])

t->str[i] = 0;

}//串s存在,1<=pos<=strlength(s),且0<=len<=strlength(s)-pos+1,

//用sub返回s的第pos個字元起長度為len的子串

void substring(string *sub,string s,int pos,int len)

sub->str[i] = 0;

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

//若主串s中存在和串t值相同的子串,則返回它在主串s中第pos個字元之後第一次出現的位置,否則返回0

void index(string s,string t,int *pos)

}if (j = 0)

else

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

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

//將新串插入

for (i=pos;ielse

if(len3//原串向前移動

for (i=pos+len3;i//將新串複製

for(i=0;ielse

//從位置pos開始插入子串t

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

void strdelete(string *s,int pos,int len)

}

4 2 串的表示和實現

如果在程式語言中,串只是作為輸入或輸出變數存在,那麼只需儲存此串的值,即字串行即可。在多數非數值處理的程式中,串也可以以變數的形式出現。串有三種機內表示方法,分別如下 4.2.1 定長順序儲存表示 類似於線性表的順序儲存結構,用一組位址連續的儲存單元儲存串值的字串行。按照預定義的串長,為每個串變數分...

資料結構 串的順序表示和實現

上次寫鏈式串的時候就覺得太麻煩了,而且還不一定好用,今天就寫順序的果然方便很多。寫的串是常用的字串以及一些常用函式。全部自己原創的,如有不足還請指出。include using namespace std const int maxn int 1e6 7 typedef struct chunk c...

串的定長順序儲存表示和實現

串是零個或多個字元的有限序列,我們可以將其看作是種特殊的線性表,其特殊性在於線性表的資料元素的型別總是字元性,字串的資料物件約束為字符集。串的儲存方式有三種 定長順序儲存表示 堆分配儲存表示 塊鏈儲存表示。本文主要講解串的定長順序儲存表示及其操作的實現 include using namespace...