在本篇文章中作者将介绍串的存储结构以及与其相关的代码。
在文章中我们了解了串也是一种特殊的线性表,所以它的存储结构也与线性表相同,分为了顺序存储与链式存储。
串的顺序存储的代码实现其实与顺序表是很类似的,只是将结构体中数组的类型定义为了char类型(因为串中的数据元素必须是字符型)。
接下来我们就来看看如何用代码实现串的存储:
一,顺序存储:
1,定长:
typedefstruct{
chardata[Maxsize];//使用了数组,长度不可改变
intlength;
}SString;
2,堆分配:
typedefstruct{
char*ch;
intlength;
}HString;
HStringS;
S.ch=(char*)malloc(MAX*sizeof(char));
S.length=0;
二,链式存储:
#includestdio.h
#includemalloc.h
#includestdlib.h
#includestring.h
#defineMaxsize
typedefstructStringNode{
charch[10];//每个结点存储多个字符,以节省空间
structStringNode*next;
}StringNode,*String;
三,基本操作(求子串):
boolsub(SStringSub,SStringS,intpos,intlen){
if(pos+len-1S.length){
returnfalse;
//TODO
}
for(inti=pos;ipos+len;i++){
Sub.data[i-pos+1]=S.data;
}
Sub.length=len;
returntrue;
//TODO
}
本篇文章到此就结束了,欢迎大家