数据结构 您所在的位置:网站首页 数据结构与算法重难点 数据结构

数据结构

2023-07-18 21:29| 来源: 网络整理| 查看: 265

以下是数据结构顺序串的定义初始化、赋值、两串比较的基本操作。

定义 typedef struct Str{ char *ch; int length; }S;

串的组成: 1:length: 用length记录串的长度是为了减少后期的遍历串获取串长度的时间复杂度。如果不设置length的话,每一次获取字符串长度都需要一次循环,时间复杂度为O(n),如果设置了length的话,给串新增字符的过程中就记录当前串的长度,未来需要串的长度的时候直接获取length就可以了,时间复杂度降低为O(1)。 2:ch ch是串里的字符串。

初始化 int initial(Str &s,int length){ if(s.ch){ free(s.ch);//如果存在有字符串,先清空 } s.ch = (char*)malloc(sizeof (char)*(length+1));//多加一个位置给'\0' if(s.ch==NULL){ cout length++;//注意,这个length不会算入最后的'\0'进去 p++; } if(!length){//如果ch为空 s.ch == NULL; s.length = 0; return 0; } if(initial(s,length)){//初始化串 p = ch;//指针p重新指向字符串ch的起点 for(int i = 0;i cout for(int i = 0;i return s1.ch[i]-s2.ch[i];//一旦出现不一样的字符,结束比较并返回两个字符ASCII码的差值 } } return s1.length-s2.length; //要么两串长度相等并且每个字符都相同(此时返回0) //要么两串长度不等但是小串和大串的前段完全相同,但是大串还有省下的字符在后段 }

步骤:

将两个字符串同下标的字符进行比较,如果相同,则进行下一个字符;如果不相同则转换成比较标记后返回退出。如果通过字符的ASCII码值大小进行比较无结果,则直接使用两字符串的长度作出比较标记后返回退出。

关于比较标记:如果是字符比较出结果,则直接使用字符的ASCII码的值相减。得正数A串大而得负数则是B串大;长度相减得正数A串大而得负数则是B串大。

运行截图

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

原码 /* 广西师范大学 计算机科学与工程学院 GuangXi Normal University College of Computer Science and Engineering Student STZ */ #include #include using namespace std; typedef struct Str{ char *ch; int length; }S; int initial(Str &s,int length){ if(s.ch){ free(s.ch);//如果存在有字符串,先清空 } s.ch = (char*)malloc(sizeof (char)*(length+1));//多加一个位置给'\0' if(s.ch==NULL){ cout cout length++;//注意,这个length不会算入最后的'\0'进去 p++; } if(!length){//如果ch为空 s.ch == NULL; s.length = 0; return 0; } if(initial(s,length)){//初始化串 p = ch;//指针p重新指向字符串ch的起点 for(int i = 0;i for(int i = 0;i return s1.ch[i]-s2.ch[i];//一旦出现不一样的字符,结束比较并返回两个字符ASCII码的差值 } } return s1.length-s2.length; //要么两串长度相等并且每个字符都相同(此时返回0) //要么两串长度不等但是小串和大串的前段完全相同,但是大串还有省下的字符在后段 } int main(){ Str s1,s2; char ch1[100],ch2[100]; cout cout cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有