串的定长顺序存储结构|C++实现
数据结构里的串,是一种简单的线性表
一系列相连的字符就形成了字符串
空串不含有任何字符
空格也是字符
对照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++实现相关推荐
- 数据结构 | 实现串(定长顺序存储表示法)
-------------------------------------------- 定长顺序存储表示法 -------------------------------------------- ...
- 串的顺序存储结构c语言版,数据结构C语言版串的定长顺序存储表示和实现.doc
. . #include #include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define O ...
- 数据结构笔记(十二)-- 定长顺序结构的实现
定长顺序结构的实现 一.定长顺序结构的概述 定长顺序结构 是类似于线性表的顺序存储结构,使用一组连续的存储单元存储串值的字符序列. 二.串的定长顺序存储表示 # define MAXSTRLEN 40 ...
- c语言实现定长顺序存储,c语言:定长顺序串的基本操作实实现
// 串的定长顺序存储实现.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include #include #include #incl ...
- 设某机为定长指令字结构,指令长度12位,每个地址码占3位,试提出一种分配方案……
2022年12月13日修改 原来的博客是 2018-09-21 17:34:47 发布 的啊,偶尔也有人让详细讲讲--行吧-- 题目: 设某机为定长指令字结构,指令长度12位,每个地址码占3位,试提出 ...
- 【数据结构】C语言-实现(定长顺序存储)串的基本操作(无C++内容)
本文章实现的基本操作:1.初始化:2.串的输入:3.串的输出:4.串的长度:5.串的比较:6.清空串:7.判空:8.串的连接:9.BF匹配模式:10.串的删除. 目录 头文件 SString.h 函数 ...
- 串的定长存储表示【数据结构】
- python顺序结构实验报告_Python 数据结构 之 串 的顺序存储结构
本文所采用的数据结构模板为 <数据结构教程>C语言版,李春葆.尹为民等著. 改篇所涉及到的是 串 的顺序存储结构. 用Python仿照C语言来实现. 代码地址: 串 的顺序存储结构: # ...
- 数据结构——定长串操作
[申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出. 联系邮箱:Mr_chenping@163.com] 这里的串就是字符串的意思,串(string)是由零个或多个字符组成的有限序列,又名叫 ...
最新文章
- pythonsuper函数_怎么使用python super函数调用父类
- 关于卷积神经网络可视化的一点心得
- [Java] 蓝桥杯ALGO-151 算法训练 6-2递归求二进制表示位数
- Sharepoint创建List
- CheckBox组件
- php mysql手册下载chm_PHP7教程|PHP7中文手册下载chm版 - 欧普软件下载
- 【文本挖掘】关键词提取
- 大学教师晋升正教授职称需要多久
- 利用js完成根据excel填充网页表单
- Discuz论坛密码与密保加密规则
- html405是什么错误,网站打开显示405错误信息如何解决?
- Mac 开启 HIDPI 设置各种分辨率 HIDPI mac high sierra 2k
- 买卖股票的最佳时机——力扣121题
- word转html linux java,Java-linux下如何代码实现word转换成html
- python解魔方程序_写一个解二阶魔方的程序
- js字符串根据某个特殊字符截取字符串
- 东方欲晓,莫道君行早
- 如何使用BEACON功能?
- PX4无人机-Gazebo仿真实现移动物体的跟踪
- o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task