计算机编程中串的三种存储结构存是什么

  介绍

小编给大家分享一下计算机编程中串的三种存储结构存是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

是的,串是一种数据对象和操作都特殊的线性表结构。数据结构中提到的串,即字符串;字符串中的字符之间具有“一对一”的逻辑关系,所以严格意义上讲,串存储结构是一种线性存储结构。

本教程操作环境:windows7多系统,戴尔G3电脑。

数据结构中提到的串,即字符串,由n个字符组成的一个整体(n祝辞=0)。这n个字符可以由字母,数字或者其他字符组成。

数据结构中,字符串要单独用一种存储结构来存储,称为串存储结构。

严格意义上讲,串存储结构也是一种线性存储结构,因为字符串中的字符之间也具有“一对一“的逻辑关系。只不过,与之前所学的线性存储结构不同,串结构只用于存储字符类型的数据。

<强>特殊的串

<李>

空串:含有零个字符的串,例如:S="(双引号中没有任何东西),一般直接用吗?表示。

  • 空格串:只包含空格的串。注意和空串区分开,空格串中是有内容的,只不过包含的是空格,且空格串中可以包含多个空格。例如,a=?”(包含3个空格)。

  • 子串与主串:串中任意个连续字符组成的字符串叫做该串的子串,包含子串的串称为主串。

  • 例如:a=盉EI”,b=盉EIJING”,c=盉JINGEI” 。对于字符串 a 和 b 来说,由于 b 中含有连续的字符串 a ,

    所以可以称 a 是 b 的子串,b 是 a 的主串;而对于 c 和 a ,虽然 c 中也含有 a 的全部字符,但不是连续的 “BEI” ,所以串 c 和 a 没有任何关系。

    子串在主串中的位置:对于串 a=盉EI” 来说,首字符 ‘B’ 在串 b 的位置为 1 ,所以子串 a 在主串 b=癇EIJING” 中的位置是 1。

    子串在主串中的位置和字符在数组中的存放位置不同,子串在主串的位置从 1 开始数。

    两个串相等的标准:如果两个串的串值完全相同,那么这两个串相等。

    串的三种存储结构存

    储串的结构有三种:

    1 定长顺序存储;

    2 堆分配存储;

    3 块链存储。

    定长顺序存储

    采用固定长度的数组(即静态数组)存储串。

    例如:char a[7]="abcdfg";

    此方式存储串时,需要预估串的长度提前申请足够的存储空间。目标串如果超过了数组申请的长度,超出部分会被自动舍弃(称为“截断”)。

    例如:char a[3]="abcdfg";//实际上数组中只存储了 “abc” ,后边的被截断。堆分配存储

    采用动态数组存储串

    在C语言中,存在着一个被称之为“堆”的自由存储区,用 malloc 函数和 free 函数管理,malloc 函数负责申请空间,free 函数负责释放空间。

    例如:

    char * a = (char*)malloc(5*sizeof(char));//创建 a 数组,动态申请5个 char 类型数据的存储空间

    使用堆分配存储的优势在于:当发现申请的空间不够用时,可以通过 realloc() 函数重新申请更大的存储空间。

    例如:a = (char*)realloc(a, 10*sizeof(char));//前一个参数指申请空间的对象;第二个参数,重新申请空间的大小

    使用 malloc 函数申请的存储空间,不会自动释放,需要程序员调用 free() 函数手动释放。如果不手动释放,当程序执行彻底结束,由操作系统进行回收。

    例如:free(a);//释放动态数组a申请的空间

    举一个完整的例子,连接串 “abc” 和 “defg” 变为 “abcdefg” ;

    #include 
      # include  & lt; stdlib.h>
      # include  & lt; string.h>
      int  main ()
      {
      ,,,char  *, a1=零;
      ,,,char  *, a2=零;
      ,,,,
      ,,,a1=(char *) malloc (3 * sizeof (char));
      ,,,拷贝字符串(a1,,“abc");//将字符串“abc”复制给a1
      ,,,,
      ,,,a2=(char *) malloc (3 * sizeof (char));
      ,,,拷贝字符串(a2,“defg");
      ,,,,
      ,,,int  lengthA1=strlen (a1);
      ,,,int  lengthA2=strlen (a2);
      ,,,if  (lengthA1计算机编程中串的三种存储结构存是什么