数据结构里的串,是一种简单的线性表
一系列相连的字符就形成了字符串
空串不含有任何字符
空格也是字符
对照ASCII码
子串必须是一个串中连续字符组成的,哪怕所有元素都是一个串中的,但是不连续也不是子串
空串是任何串的子串
'a’代表单个字符
”a“表示字符串”a\0“ \0代表结束,且战=占一个位置

在定长顺序存储结构里,用数组来实现串
下标为0,用来存储该串的长度,这样串从下标为1开始存储值,结尾处不需要\0来结束
当然也可以不在下标为0处存放长度,结尾就要一个终结号,如c语言中的\0

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string>
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0#define STRMAXSIZE 256
typedef int Status;
typedef unsigned char SString[STRMAXSIZE];Status StrAssignment(SString T, char chars[])//输入值
{int i;
if (strlen(chars)> STRMAXSIZE)
return ERROR;
else
{T[0] = strlen(chars);//首地址用来存放串的长度
for (i = 0; i <= T[0]; i++)
{T[i+1] = chars[i];
}
}
return OK;
}//复制
Status Strcopy(SString T, SString S)
{int i;for (i = 1; i <= S[0]; i++)//因为s[0]代表的是 长度{T[i] = S[i];}T[0] = S[0];return 0;
}
//判断是否为空
Status Strempty(SString T)
{if (T[0] = 0)return OK;elsereturn FALSE;
}
//返回长度
Status Strlength(SString T)
{return T[0];
}
//串联 依次将S1 S2 串联到T中
Status Strconcat(SString T,SString s1,SString s2)
{int k;if (s1[0] + s2[0] <= STRMAXSIZE){for (k = 1; k <= s1[0]; k++){T[k] = s1[k];}for (k = 1; k <= s2[0]; k++){T[s1[0] + k] = s2[k];}T[0] = s1[0] + s2[0];return 1;}else{if (s1[0] > STRMAXSIZE)//如果s1的值大于长度STR{T[0] = STRMAXSIZE;for (k = 1; k <= s1[0]; k++){T[k] = s1[k];return 1;}}else//不然的话就是s2大于STR,那么先复制一部分s1,再复制剩余的s2{T[0] = STRMAXSIZE;for (k = 1; k <= s1[0]; k++){T[k] = s2[k];return 1;}//上面一部分只是复制了s1,位置还有剩余for (k = 1; k <= STRMAXSIZE - s1[0]; k++){T[s1[0] + k] = s2[k];return 1;}}}return 0;
}
Status StrPrint(SString S)
{//输出函数int i;for (i = 1; i <= S[0]; i++){cout << S[i];}cout << endl;return 0;
}int main()
{char a[100], b[100];//赋值
SString s1,s2;
cout << "请输入两个字符串" << endl;
cin.getline(a, 100);//输入十个字符包括\0 才能输入下一个
cin.getline(b, 100);//
cout << "显示这两个字符串" << endl;
cout << a << ',' << b << endl;
StrAssignment(s1, a);
StrAssignment(s2,b);
//复制到另一个串中
SString s3;
cout << "复制一个串到s3中" << endl;
Strcopy(s3,s1);
cout << "显示内容" << endl;
StrPrint(s3);
//判断是否为空
cout << "清空串" << endl;
if (Strempty(s3) == 1)cout << "串不空" << endl;
else
cout << "串空" << endl;
//返回长度
cout << "串的长度为" << Strlength(s3) << endl;
//将s1,s2的值赋予到T中;
SString T;
Strconcat(T, s1, s2);
cout << "串的长度为" << Strlength(T) << endl;
cout << "串的内容为" << ":" << endl;
StrPrint(T);
return 0;}

cin的参考链接https://blog.csdn.net/a1015553840/article/details/50579396?ops_request_

串的定长顺序存储结构|C++实现相关推荐

  1. 数据结构 | 实现串(定长顺序存储表示法)

    -------------------------------------------- 定长顺序存储表示法 -------------------------------------------- ...

  2. 串的顺序存储结构c语言版,数据结构C语言版串的定长顺序存储表示和实现.doc

    . . #include #include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define O ...

  3. 数据结构笔记(十二)-- 定长顺序结构的实现

    定长顺序结构的实现 一.定长顺序结构的概述 定长顺序结构 是类似于线性表的顺序存储结构,使用一组连续的存储单元存储串值的字符序列. 二.串的定长顺序存储表示 # define MAXSTRLEN 40 ...

  4. c语言实现定长顺序存储,c语言:定长顺序串的基本操作实实现

    // 串的定长顺序存储实现.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include #include #include #incl ...

  5. 设某机为定长指令字结构,指令长度12位,每个地址码占3位,试提出一种分配方案……

    2022年12月13日修改 原来的博客是 2018-09-21 17:34:47 发布 的啊,偶尔也有人让详细讲讲--行吧-- 题目: 设某机为定长指令字结构,指令长度12位,每个地址码占3位,试提出 ...

  6. 【数据结构】C语言-实现(定长顺序存储)串的基本操作(无C++内容)

    本文章实现的基本操作:1.初始化:2.串的输入:3.串的输出:4.串的长度:5.串的比较:6.清空串:7.判空:8.串的连接:9.BF匹配模式:10.串的删除. 目录 头文件 SString.h 函数 ...

  7. 串的定长存储表示【数据结构】

  8. python顺序结构实验报告_Python 数据结构 之 串 的顺序存储结构

    本文所采用的数据结构模板为 <数据结构教程>C语言版,李春葆.尹为民等著. 改篇所涉及到的是 串 的顺序存储结构. 用Python仿照C语言来实现. 代码地址: 串 的顺序存储结构: # ...

  9. 数据结构——定长串操作

    [申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出. 联系邮箱:Mr_chenping@163.com] 这里的串就是字符串的意思,串(string)是由零个或多个字符组成的有限序列,又名叫 ...

最新文章

  1. pythonsuper函数_怎么使用python super函数调用父类
  2. 关于卷积神经网络可视化的一点心得
  3. [Java] 蓝桥杯ALGO-151 算法训练 6-2递归求二进制表示位数
  4. Sharepoint创建List
  5. CheckBox组件
  6. php mysql手册下载chm_PHP7教程|PHP7中文手册下载chm版 - 欧普软件下载
  7. 【文本挖掘】关键词提取
  8. 大学教师晋升正教授职称需要多久
  9. 利用js完成根据excel填充网页表单
  10. Discuz论坛密码与密保加密规则
  11. html405是什么错误,网站打开显示405错误信息如何解决?
  12. Mac 开启 HIDPI 设置各种分辨率 HIDPI mac high sierra 2k
  13. 买卖股票的最佳时机——力扣121题
  14. word转html linux java,Java-linux下如何代码实现word转换成html
  15. python解魔方程序_写一个解二阶魔方的程序
  16. js字符串根据某个特殊字符截取字符串
  17. 东方欲晓,莫道君行早
  18. 如何使用BEACON功能?
  19. PX4无人机-Gazebo仿真实现移动物体的跟踪
  20. o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task

热门文章

  1. linux指令——刘雯丽
  2. 杀人游戏-Tarjan
  3. 安卓手机管理软件_安卓苹果手机电池使用久了该不该换
  4. 华为手机鸿蒙系统手机_升级快讯:又一批华为手机可以升级到“鸿蒙系统”了!...
  5. 网页设计配色应用教程之各种色彩对比分析
  6. google 招聘题
  7. nginx启动时指定prefix(覆盖编译时的 --prefix)
  8. StringUtil方法全集
  9. 我为啥暂不看好ServiceMesh?
  10. c语言输出十六进制数乱码,输出乱码