串的基本操作(数据结构)

news2024/9/21 12:39:32

串的基本操作

#include <stdlib.h>
#include <iostream>
#include <stdio.h>
#define MaxSize 255

typedef struct{
	char ch[MaxSize];
	int length;
}SString;

//初始化
SString InitStr(SString &S){
	S.length=0;
	return S;
} 


//为了方便计算,串的下标从1开始计算 
//给串赋值 
SString SetStr(SString &S){
	char c;
	int i=1;
	scanf("%c",&c);
	while(c!='\n'){
		S.ch[i++]=c;
		S.length++;
		scanf("%c",&c);
	}
	return S;
} 

//返回字符串的长度
int StrLength(SString &S){
	return S.length;
} 

//清空字符串 
void ClearStrinf(SString &S){
	S.length=0;
}

//求字符串的字串
bool SubString(SString &Sub,SString &S,int pos,int len){
	if(pos+len-1>S.length) return false;//字串超出范围
	for(int i=pos;i<pos+len;i++){
		Sub.ch[i-pos+1] = S.ch[i];
	} 
	Sub.length = len;
	return true;
} 

//比较字符串
bool StrCompare(SString &S,SString &T){
	for(int i=1;i<=S.length && i<=T.length;i++){
		if(S.ch[i]!=T.ch[i])//进行字符比较 
			return S.ch[i]-T.ch[i];// S>T:>0,S<T:<0,S=T:=0 
	}
	return S.length-T.length;//所有字符都相同,长度大的串更大 
} 

//定位操作
int Index(SString &S,SString &T){
	int i=0;
	int n=StrLength(S);
	int m=StrLength(T);
	SString Sub;//暂时存字串 
	while(i<=n-m+1){
		SubString(Sub,S,i,m);
		if(StrCompare(Sub,T)!=0) i++;
		else return i;//返回字串在主串的位置 
	}
	return 0;//不存在与T匹配的字串 
}

//显示串 
void ShowString(SString &S){
	for(int i=1;i<S.length;i++){
		printf("%c",S.ch[i]);
	}
	printf("\n");
}

int main(){
	printf("设置串:");
	SString S;
	InitStr(S);
	SetStr(S);
	int len1;
	len1=StrLength(S);
	printf("串长度为:%d\n",len1);
	printf("设置字串:");
	SString D;
	InitStr(D);
	SetStr(D);
	int len2;
	len2=StrLength(D);
	printf("子串长度为:%d\n",len2);
	
	
	printf("\n");
	printf("-----------求字符串的字串-------------\n");
	SString Sub;
	int pos,len;
	printf("输入截取的起始位置和长度:");
	scanf("%d,%d",&pos,&len);
	if(SubString(Sub,S,pos,len)) {
		printf("截取后的字串\n");
		ShowString(Sub);
	}
	else printf("截取失败\n");
	
	printf("\n");
	printf("-------------定位字串-------------\n");
	int i;
	i=Index(S,D);
	if(i) printf("字串定位:%d",i);
	else printf("字串定位失败\n");
	return 0;
}

展示

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1080593.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java架构师部署架构设计

目录 1 导学2 部署架构设计和部署架构图3 实战整体部署架构设计4 节点部署说明列表5 总结1 导学 本章的主要内容是整体架构设计的核心之一,部署架构设计相关的一些知识落到项目上,就是系统系统的部署架构设计。在本章学习里面我们可以去去学习整部署架构构,主要是部署架构设…

大模型分布式训练并行技术(四)-张量并行

linkj 近年来&#xff0c;随着Transformer、MOE架构的提出&#xff0c;使得深度学习模型轻松突破上万亿规模参数&#xff0c;传统的单机单卡模式已经无法满足超大模型进行训练的要求。因此&#xff0c;我们需要基于单机多卡、甚至是多机多卡进行分布式大模型的训练。 而利用AI集…

基于 ACK Fluid 的混合云优化数据访问(二):搭建弹性计算实例与第三方存储的桥梁

作者&#xff1a;车漾 前文回顾&#xff1a; 本系列将介绍如何基于 ACK Fluid 支持和优化混合云的数据访问场景&#xff0c;相关文章请参考&#xff1a; 基于 ACK Fluid 的混合云优化数据访问&#xff08;一&#xff09;&#xff1a;场景与架构 在前文《场景与架构》中&…

Springboot使用RestTemplate调用第三方接口

配置 新建一个RestTemplate的配置类&#xff0c;如下&#xff1a; /*** RestTemplate配置项*/ Configuration public class RestTemplateConfig {Beanpublic RestTemplate restTemplate() {return new RestTemplate();}} 在controller中引入RestTemplate&#xff0c;如下&am…

PHP 车辆租赁系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 车辆租赁系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 php 车辆租赁管理系统1 代码 https://download.csdn.net/download/qq_41221322/88414512…

软信天成:AI驱动,化解企业数据的隐私之痛

近年来&#xff0c;在全面数字化的背景下&#xff0c;不断加剧的数据丢失和爆炸式的个人数据增长让数据隐私的需求变得空前迫切。为解决个人、企业等敏感数据被滥用的现状&#xff0c;各地监管机构开始逐渐完善区域内数据隐私法律法规。从《欧盟通用数据保护条例》&#xff08;…

档案宝档案管理系统在微信小程序上线了!

随着信息时代的到来&#xff0c;企业和组织面临着越来越多的信息和数据需要管理。而档案管理作为一项重要的任务&#xff0c;对于企业的运营和决策起着至关重要的作用。为了满足用户的需求&#xff0c;我们很高兴地宣布&#xff0c;档案宝档案管理系统已经在微信小程序上线了&a…

git clone项目报错文件名过长

1.最近从git上clone项目时&#xff0c;有时会遇到报错&#xff0c;报出Filename too long错误。 Filename too long fatal: unable to checkout working tree warning: Clone succeeded, but checkout failed. 2.原因 Windows支持最长260字符的文件名&#xff08;包括其路径在…

Linux-文件管理命令

绝对路径&#xff1a;从根目录开始描述的路径 pwd输入即为绝对路径&#xff0c; 开头一定是“/”&#xff0c;因为一定是从根目录开始走 相对路径&#xff1a;从当前路径开始描述的路径&#xff0c;开头不一定是“/”&#xff0c;因为不一定是从根目录开始走的 .:是当前目录 。…

无人值守配电室变电所运维解决方案

随着电力系统数字化、智能化的不断发展&#xff0c;无人值守配电室变电所已经成为一种趋势。为了确保变电所的安全稳定运行&#xff0c;本文提出了一种无人值守配电室变电所运维解决方案。 一、背景介绍 力安科技电易云无人值守配电室变电所是指通过远程监控和智能化电力数…

虚拟机软件Parallels Desktop 19 mac功能介绍

Parallels Desktop 19 mac是一款虚拟机软件&#xff0c;它允许用户在Mac电脑上同时运行Windows、Linux和其他操作系统。Parallels Desktop提供了直观易用的界面&#xff0c;使用户可以轻松创建、配置和管理虚拟机。 PD19虚拟机软件具有快速启动和关闭虚拟机的能力&#xff0c;让…

实盘股票杠杆平台排名报告:五大排名和评估一览

本报告旨在根据公开信息和用户反馈&#xff0c;对股票配资公司的五大排名进行深入分析。这些排名包括尚红网、倍悦网、兴盛网、诚利和、嘉正网、广瑞网、富灯网、天创网、恒正网、创通网。 一、尚红网 尚红网在股票配资公司中一直享有盛誉&#xff0c;其资金雄厚&#xff0c;…

Linux操作系统常见指令理解(1)

Linux是一种开源的操作系统&#xff0c;常用于服务器和嵌入式设备。以下是一些常见的Linux指令及其详解&#xff1a; ls&#xff1a;列出目录中的文件和子目录。 cd&#xff1a;改变当前工作目录。 pwd&#xff1a;显示当前工作目录的路径。 mkdir&#xff1a;创建一个新目录。…

告别繁琐开发,轻松玩转无代码!

导语&#xff1a;随着科技的快速发展&#xff0c;无代码开发已成为越来越多人的首选。告别繁琐的开发流程&#xff0c;无代码将让你轻松驾驭各种项目需求&#xff01;本文将带您了解无代码的魅力&#xff0c;以及如何玩转无代码&#xff0c;为您的项目插上腾飞的翅膀&#xff0…

前端-Vue-开发指南

VueJS 开源文档 拉入vscode安装node.js安装vue脚手架components : 组件router&#xff1a;路由创建新组建 &#xff1a;assets&#xff1a; 系统图片存放地址main.js&#xff1a; vue脚手架对象存放地 &#xff08;新的包要放在里面&#xff09;属性 computedslot 插槽error St…

基于Effect的组件设计 | 京东云技术团队

Effect的概念起源 从输入输出的角度理解Effect https://link.excalidraw.com/p/readonly/KXAy7d2DlnkM8X1yps6L 编程中的Effect起源于函数式编程中纯函数的概念 纯函数是指在相同的输入下&#xff0c;总是产生相同的输出&#xff0c;并且没有任何副作用(side effect)的函数。…

使用Perl脚本编写爬虫程序的一些技术问题解答

网络爬虫是一种强大的工具&#xff0c;用于从互联网上收集和提取数据。Perl 作为一种功能强大的脚本语言&#xff0c;提供了丰富的工具和库&#xff0c;使得编写的爬虫程序变得简单而灵活。在使用的过程中大家会遇到一些问题&#xff0c;本文将通过问答方式&#xff0c;解答一些…

循环神经网络时间序列预测

循环神经网络时间序列预测 循环神经网络用于时间序列预测比较好&#xff0c;先使用股票价格数据集来理解和掌握该算法。 数据来源 数据要先在Tushare注册登录一下&#xff0c;获取足够的积分 注册完之后有100积分&#xff0c;然后个人信息完善一下获取20积分&#xff0c;然后…

网络通信三要素

三要素概述 IP地址&#xff1a;设备在网络中的地址&#xff0c;是唯一的标识。 端口&#xff1a;应用程序在设备中唯一的标识。 协议: 数据在网络中传输的规则&#xff0c;常见的协议有UDP协议和TCP协议。 网络通信过程 A程序通过IP和端口找到B程序&#xff0c;再互相发…

沁恒CH582触摸功耗测试 BleTouchKey

准备用沁恒的CH582 做个低成本的蓝牙锁控&#xff0c;正好ch582 支持14通道的触摸&#xff0c;可以节省一个触摸芯片&#xff0c;测试了下功耗&#xff0c;具体如下 1、在BleTouchKey_Demo中 注释掉tmos_set_event( TouchKey_TaskID, NOTIFY_DATA_EVT); 2、把打印log 给屏蔽掉…