数据结构论坛

注册

 

发新话题 回复该主题

带你认识数据结构串的存储结构 [复制链接]

1#
北京中科医院几级 http://hunan.ifeng.com/a/20170705/5797804_0.shtml

#数据#

在本篇文章中作者将介绍串的存储结构以及与其相关的代码。

在文章中我们了解了串也是一种特殊的线性表,所以它的存储结构也与线性表相同,分为了顺序存储与链式存储。

串的顺序存储的代码实现其实与顺序表是很类似的,只是将结构体中数组的类型定义为了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

}

本篇文章到此就结束了,欢迎大家

分享 转发
TOP
发新话题 回复该主题