串:串是由零個或多個字元組成的有限序列,又名叫字串。
串的順序儲存結構:用一組位址連續的儲存單元來儲存串中的字串行。規定在串值後面加乙個不計入串長度的結束標記字元,為』\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...