具体操作如下:

1.定义串:

typedef struct  
{
    char data[Maxsize];
    int length;
} SqString;
2.输入串:

void StrAssign(SqString &s,char cstr[])
{
    int i;
    for(i=0; cstr[i]!='\0'; i++)
        s.data[i]=cstr[i];
    s.length=i;
}
3.  串的复制
void StrCopy(SqString &s,SqString t)
{
    for(int i=0; i<t.length; i++)
        s.data[i]=t.data[i];
    s.length=t.length;
}
4.  判断两个顺序串s和t是否相等
bool StrEqual(SqString s,SqString t)
{
    bool same=true;
    if(s.length!=t.length)
        same=false;
    else
        for(int i=0; i<s.length; i++)
            if(s.data[i]!=t.data[i])
            {
                same=false;
                break;
            }
    return same;
}
5.求串长  返回顺序串s的长度
int StrLength(SqString s)
{
    return s.length;
}
6.串的链接  返回由两个顺序串s和t链接在一起形成的结果串
SqString Concat(SqString s,SqString t)
{
    SqString str;
    str.length=s.length+t.length;
    for(int i=0; i<s.length; i++)
        str.data[i]=s.data[i];
    for(int i=0; i<t.length; i++)
        str.data[s.length++]=t.data[i];
    return str;
}
7.  求子串  返回子串
SqString SubStr(SqString s,int i,int j)
{
    int k;
    SqString str;
    str.length=0;
    if(i<=0||i>s.length||j<0||i+j-1>s.length)
        return str;
    for(k=i-1; k<i+j-1; k++)
        str.data[k-i+1]=s.data[k];
    str.length=j;
    return str;
}
8.  子串的插入  将顺序串s2插入到顺序串s1的第i个位置上,并返回产生的结果
SqString SubStr(SqString s1,int i,SqString s2)
{
    int j;
    SqString str;
    str.length=0;
    if(i<=0||i>=s1.length+1)
        return str;
    for(j=0; j<i-1; j++)
        str.data[j]=s1.data[j];
    for(j=0; j<s2.length; j++)
        str.data[i+j-1]=s2.data[j];
    for(j=i-1; j<s1.length; j++)
        str.data[s2.length+j]=s1.data[j];
    str.length=s1.length+s2.length;
    return str;
}
9.  子串的删除   在顺序串s中删除从第i个字符开始的长度为j的子串,返回产生的结果
SqString DelStr(SqString s,int i,int j)
{
    SqString str;
    str.length=0;
    if(i<=0||i>s.length||i+j>s.length+1)
        return str;
    for(int k=0; k<i-1; k++)
        str.data[k]=s.data[k];
    for(int k=i+j-1; k<s.length; k++)
        str.data[k-j]=s.data[k];
    str.length=s.length-j;
    return str;
}
10   子串的替换  在在顺序串中将第i个字符开始的连续j个字符够成的子串用顺序串t替换
 返回产生的结果
SqString RepStr(SqString s,int i,int j,SqString t)
{
    SqString str;
    str.length=0;
    if(i<=0||i>s.length||i+j-1>s.length)
        return str;
    for(int k=0; k<i-1; k++)
        str.data[k]=s.data[k];
    for(int k=0; k<t.length; k++)
        str.data[i+k-1]=t.data[k];
    for(int k=i+j-1; k<s.length; k++)
        str.data[t.length+k-j]=s.data[k];
    str.length=s.length-j+t.length;
    return str;
}

11.  输出串  输出顺序串s
void DisStr(SqString s)
{
    if(s.length>0)
    {
        for(int i=0; i<s.length; i++)
            printf("%c",s.data[i]);
        printf("\n");
    }
}

具体例题:

串采用顺序存储,设计一个算法Strcmp(s,t)按字典序比较两个串s和t的大小

解题思路:

(1)比较s和t两个串共同长度范围内的字符
若s的字符大于t的字符,返回1;若s的字符小于t的字符,返回-1;若s的字符等于t的字符,按上述规则继续比较;

当(1)中的对应字符均相等时比较s和t的长度
s的长度大于t的长度,返回1;s的长度小于t的长度,返回-1;

int Strcmp(SqString s,SqString t)
{
    int i,comlen;
    if(s.length<t.length)
        comlen=s.length;
    else
        comlen=t.length;
    for(i=0; i<comlen; i++)
    {
        if(s.data[i]>t.data[i])
            return 1;
        else if(s.data[i]<t.data[i])
            return -1;
        if(s.length==t.length)
            return 0;
        else if(s.length>t.length)
            return 1;
        else
            return -1;
    }
}

字符串的基本操作(数据结构)相关推荐

  1. 字符串基本操作 c语言,数据结构C语言字符串的基本操作.doc

    数据结构C语言字符串的基本操作 串的基本操作 #include #include #include #define m 100 typedef struct{ char ch[m]; int leng ...

  2. python查找字符串关键词_Python字符串查找基本操作案例解析

    本篇文章小编给大家分享一下Python字符串查找基本操作案例解析,文章介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 字符串查找基本操作主要分为三个关键词:fi ...

  3. python sorted下标_Python学习教程(Python学习路线):第七天-字符串和常用数据结构

    Python学习教程(Python学习路线):字符串和常用数据结构 使用字符串 第二次世界大战促使了现代电子计算机的诞生,当初的想法很简单,就是用计算机来计算导弹的弹道,因此在计算机刚刚诞生的那个年代 ...

  4. Go语言---字符串的基本操作

    Go语言中的字符串的基本操作是在strings包下完成的. Contains函数 判断一个字符串是否包含另一个字符串,包含返回true,不包含返回false fmt.Println(strings.C ...

  5. JAVA学习 API_day03(字符串编码, 泛型, 数据结构, Collection)

    字符串编码, 泛型, 数据结构, Collection 1.字符串编码 2.泛型 3.数据结构 4.Collection 1.字符串编码 1.String -> 字符序列 (中文\英文) JVM ...

  6. c/c++中字符串的基本操作API

    c/c++中字符串的基本操作API 首先我们来认识几个#include <string.h>头文件中的API函数 strlen(const char *_Str) /*获取除了'\0'以外 ...

  7. python随机数,字符串的基本操作

    一,对昨天内容的一些补充 1.1 随机数 python有一个内置的模块 random可以用来生成随机数. 示例:导入rando模块来生成一个1-10的随机数 import random print(r ...

  8. Python开发系列课程(8) - 字符串和常用数据结构

    字符串和常用数据结构 使用字符串 第二次世界大战促使了现代电子计算机的诞生,当初的想法很简单,就是用计算机来计算导弹的弹道,因此在计算机刚刚诞生的那个年代,计算机处理的信息主要是数值,而世界上的第一台 ...

  9. 第5关 字符串的基本操作

    需求=过去困惑+当下渴望+未来希望 --实干<实干日记> 第5关 字符串的基本操作 5-1 为什么len函数获取中文字符串长度有问题? 5-2 什么是转义符? 5-3 子串查询.子串统计. ...

最新文章

  1. python大众点评网应该涉及哪些参考文献及其出版社_python小练习(052):爬取大众点评网美食版块+数据库储存+大数据分析(二)...
  2. java poi excel读写_JAVA-POI操作Excel读写
  3. 【java设计模式】-00目录
  4. TensorFlow Java+eclipse下环境搭建
  5. Please install [clang](http://clang.llvm.org/) or check configuration `clang.executable`
  6. oracle低权限下获取shell
  7. php连接mysql并操作系统_PHP 连接并操作MySQL的一个实例
  8. (2)FPGA面试技能提升篇(Perl脚本)
  9. [原创] 图片操作的类(ImageLibrary)-按比例缩放图片
  10. URAL 1586. Threeprime Numbers 数位dp
  11. Linux-HA 高可用开源方案 Keepalived VS Heartbeat 的选择
  12. 海明贴近度matlab,Matlab学习系列23.-模糊聚类分析原理及实现.docx
  13. IDEA 提示Unmapped Spring configuration files found的解决办法
  14. printf输出二进制
  15. 收益用计算机怎么计算,有利网收益计算器怎么用
  16. BPDU Timers
  17. 谷歌浏览器打开金格在线编辑插件
  18. 数据分析的终极目标-预测第1辑
  19. 制作Java视频播放器
  20. 什么是SOA?为什么要SOA?

热门文章

  1. 游戏本电脑性价比排行2020年哪款好?万元内可选新款来了
  2. pinpoint配置
  3. ArcGIS教程:任务助手管理器的新特性
  4. IronOCR,Crack支持全球125种语言
  5. Android Studio下的APP图标设置
  6. 【VUE】微商城(三)----添加顶部标题栏返回按钮功能实现
  7. 新手学3D游戏建模,台式电脑笔记本有什么推荐?
  8. 一台服务器可以架设几个不同的传奇版本
  9. 《深入理解计算机系统》读书笔记(1)
  10. MySQL中的外键(foreign key)