c语言版数据结构(奇迹冬瓜)-串(定长顺序存储各项操作)

数据结构——串的基本操作(C语言,完整优美实现) 串 文章目录串前言一、串是什么?二、该如何理解串?三、各类串的形式四、串的实现1.串的实现1.1 引入库以及设置结构体1.2初始化串1.3求子串的功能实现1.4两串比较的功能实现1.5定位功能1.6求串的长度功能1.7串的输出功能1.7主函数实现上述全部功能总结 前言 本文就介绍了数据结构中串的基本操作的编程实现,掌握串的建立、遍历,求子串,定位等基本操作 提示:以下是本篇文章正文内容,下面案例可供参考 一、串是什么? 在计算机程序设计中,字符串 string 通常是字符序列,要么是文字常量,要么是 阅读详情
//-----头文件------
#include<stdio.h>
#include<stdlib.h>

//------宏定义------
#define MAXSTRLEN 255
#define OVERFLOW -2
#define TURE 1
#define ERROR 0

//-------类型名替换--------
typedef unsigned char SString[MAXSTRLEN+1];
typedef int Bool;

//-----函数列表-----
Bool StrAssign(SString *T,char *s);
Bool StrCopy(SString *T,SString S);
Bool StrEmpty(SString S);
int StrCompare(SString S,SString T);
int StrLength(SString S);
Bool ClearString(SString *S);
Bool Concat(SString *T,SString S1,SString S2);
Bool SubString(SString *Sub,SString S,int pos,int len);
Bool StrInsert(SString *S,int pos,SString T);
Bool StrDelete(SString *S,int pos,int len);
Bool Replace(SString *S,SString T,SString V);
Bool DestroyString(SString *S);
int Index(SString S,SString T,int pos);
void StrOutput(SString S);

//-----主函数做替换测试------
void main()
{
	SString t,*T=&t,s,*S=&s,s0,*S0=&s0;
	int n;
	StrAssign(T,"de");
	StrAssign(S0,"ed");
	StrAssign(S,"adegddefdef");
	Replace(S,t,s0);
	//printf("%d",Index(s,t,1));
	//ClearString(S);
	//StrCopy(S,t);
	//for(n=1;n<=(*S)[0];n++)
	StrOutput(s);
	getchar();
	getchar();
}

//------生成一个其值等于字符串常量的串T------
Bool StrAssign(SString *T,char *s)
{
	int i;
	for(i=0;'\0'!=*s;s++,i++)
	{
		(*T)[i+1]=*s;
	}
	(*T)[0]=i;
	return TURE;
}

//------生成一个其值等于串S的串T------
Bool StrCopy(SString *T,SString S)
{
	int i;
	for(i=1;i<=S[0];i++)
	{
		(*T)[i]=S[i];
	}
	(*T)[0]=S[0];
	return TURE;
}

//-----判断是否为空串------
Bool StrEmpty(SString S)
{
	return S[0]==0?TURE:ERROR;
}

//-----比较两个串的大小------
int StrCompare(SString S,SString T)
{
	int i;
	if(0==S[0]||0==T[0])
	{
		return ERROR;
	}
	for(i=1;i<=S[0]&&i<=T[0];i++)
	{
		if(S[i]>T[i])
		{
			return 1;
		}
		else if(S[i]<T[i])
		{
			return -1;
		}
		else
		{
			continue;
		}
	}
	if(S[0]==T[0])
	{
		return 0;
	}
	else if(S[0]>T[0])
	{
		return 1;
	}
	else
	{
		return -1;
	}
}

//-----返回串的长度-----
int StrLength(SString S)
{
	return S[0];
}

//-----清空串-----
Bool ClearString(SString *S)
{
	if(0!=(*S)[0])
	{
		(*S)[1]='\0';
		(*S)[0]=0;
	}
	return TURE;
}

//-----用T返回由S1和S2连接而成的串-----
Bool Concat(SString *T,SString S1,SString S2)
{
	int i,j;
	if(S1[0]+S2[0]<=MAXSTRLEN)
	{
		for(i=1;i<=S1[0];i++)
		{
			(*T)[i]=S1[i];
		}
		for(j=1;i<=S1[0]+S2[0];i++)
		{
			(*T)[i]=S2[j++];
		}
		(*T)[0]=S1[0]+S2[0];
		return TURE;
	}
	else if(S1[0]<MAXSTRLEN&&(S1[0]+S2[0])>MAXSTRLEN)
	{
		for(i=1;i<=S1[0];i++)
		{
			(*T)[i]=S1[i];
		}
		for(j=1;i<=MAXSTRLEN;i++)
		{
			(*T)[i]=S2[j++];
		}
		(*T)[0]=MAXSTRLEN;
		return ERROR;
	}
	else
	{
		for(i=1;i<=MAXSTRLEN;i++)
		{
			(*T)[i]=S1[i];
		}
		(*T)[0]=MAXSTRLEN;
		return ERROR;
	}
}

//-----输出串-----
void StrOutput(SString S)
{
	int i;
	for(i=1;i<=S[0];i++)
	{
		printf("%c",S[i]);
	}
}

//-----用Sub返回串S中在pos位置开始长度为len的字串-----
Bool SubString(SString *Sub,SString S,int pos,int len)
{
	int i,j;
	if((pos>=1&&pos<=S[0])&&(len>=0&&len<=S[0]-pos+1))
	{
		for(i=1,j=pos;i<=len;i++)
		{
			(*Sub)[i]=S[j++];
		}
		(*Sub)[0]=len;
		return TURE;
	}
	return ERROR;
}

//-----查找在相同子串的固定位置-----
int Index(SString S,SString T,int pos)
{
	int m,n,i;
	SString sub;
	if(pos>0)
	{
		n=StrLength(S);
		m=StrLength(T);
		i=pos;
		while(i<=n-m+1)
		{
			SubString(&sub,S,i,m);
			if(0!=StrCompare(sub,T))
			{
				++i;
			}
			else
			{
				return i;
			}
		}
	}
	return 0;
}

//-----用V替换在S中存在的所有与T相同的子串-----
Bool Replace(SString *S,SString T,SString V)
{
	int i=1,j=1,m=StrLength(T),n=StrLength(V);
	while(i<=(*S)[0])
	{
		j=Index(*S,T,i);
		StrDelete(S,j,m);
		StrInsert(S,j,V);
		i+=n+1;
	}
	return TURE;
}


//-----在串S的第pos位置前插入串T-----
Bool StrInsert(SString *S,int pos,SString T)
{
	int m,n=StrLength(T),i=1,j=pos;
	if(pos>=1&&pos<=StrLength(*S)+1)
	{
		while(i<=n)
		{
			for(m=StrLength(*S)+1;j<m;m--)
			{
				(*S)[m]=(*S)[m-1];
			}
			(*S)[j]=T[i++];
			(*S)[0]+=1;
			j+=1;
		}
		return TURE;
	}
	return ERROR;
}

//------删除串S中从pos位置起长度为len的子串------
Bool StrDelete(SString *S,int pos,int len)
{
	int i=1,j,m,n;
	if(pos>=1&&pos<=StrLength(*S)-len+1)
	{
		while(i<=len)
		{
			for(m=StrLength(*S),j=pos;j<=m;j++)
			{
				(*S)[j]=(*S)[j+1];
			}
			(*S)[0]-=1;
			i++;
		}
		return TURE;
	}
	return ERROR;
}

//-----销毁串-----
Bool DestroyString(SString *S)
{
	free(S);
	return TURE;
}

串的基本操作定长顺序存储表示:初始化串、复制串、判断串是否为空、比较两个字符串、计算字符串长度、清空串、连接串、找子串、模式匹配、替换子串、插入和删除子串 立即下载

相关推荐

三级等保网络拓扑图实战:从零搭建符合标准的医院安全架构

本文详细阐述了如何从零开始设计并搭建符合三级等保标准的医院网络安全架构。文章基于“一个中心,三重防护”的核心框架,深入解析了医院网络分区设计、安全域划分、关键安全设备选型与配置等实战要点,并提供了绘制专业网络拓扑图的技巧与等保测评准备指南,旨在帮助医院IT人员系统化地构建既合规又实用的纵深防御体系。

weixin_29326909的博客 505

串结构之定长顺序存储详解(C语言版)

串结构之定长顺序存储(C语言版)

qq_44075108的博客 9652

模型算力需求估算

(Billion Parameters,简称B)和训练/推理的计算任务复杂度,结合硬件计算能力(例如每秒浮点运算次数,FLOPS)来估算。以下是详细的方法和公式说明,以及实际的计算示例。算力需求的估算依赖于参数量、模型架构及硬件性能,结合训练/推理场景的特定要求来计算。通过上述公式和示例,我们可以定量分析不同任务的算力需求,并合理配置硬件资源以优化运行效率。结论:推理任务相对较轻,单台H100可以在30秒内完成此任务。推理算力需求一般远低于训练,因为只需要执行前向传播。,可以将训练时间缩短到约。

形上得其象,形下合于数;阴阳自济,玄理自明。 8962

数据结构C语言:线性表——顺序存储结构实现字符串类型(一)

定义结构体 #define elemType char /* ** 定义一个实现顺序存储结构的字符串类型的线性表 */ typedef struct string{ elemType * data;// int size; int length; }string; 定义初始化操作 string newString(int size){ string s; s.data=(elemType*)malloc(sizeof(elemType)*size); if(

qq_46159283的博客 1322

AMD Ryzen AI Max+ 395四机集群实战:开源工具链与大模型推理优化全解析

本文详细解析了基于AMD Ryzen AI Max+ 395处理器的四机集群搭建与优化实践,涵盖硬件配置、开源工具链评测及大模型推理优化技巧。通过深度测试,揭示了集群在AI推理中的性能瓶颈与解决方案,特别适合需要扩展显存的大模型实验场景。文章还提供了成本效益分析,帮助开发者做出更明智的选型决策。

weixin_29041767的博客 1528

HyperMesh二次开发实战:自动化Comp与材料属性批量绑定

本文详细介绍了HyperMesh二次开发中自动化Comp与材料属性批量绑定的实战技巧。通过TCL脚本实现批量创建属性卡、智能材料分配和异常处理,大幅提升前处理效率,适用于汽车、航空航天等领域的复杂模型处理。

weixin_29214691的博客 693

数据结构之串的定长顺序存储

技术交流qq:1032492413 技术交流VX:Chamfion

偶然i的博客 3399

西门子1500 PLC与巴鲁夫RFID实战:从硬件接线到数据读写的完整流程

本文详细介绍了西门子S7-1500 PLC与巴鲁夫RFID系统集成的完整实战流程。内容涵盖从硬件选型、接线、PROFINET网络配置,到在TIA Portal中安装GSD文件、组态设备、分配地址,再到使用标准功能块(如FB31)进行程序架构设计、实现数据读写以及错误诊断。文章重点分享了硬件连接要点、软件配置步骤、数据块管理技巧以及调试中常见问题的解决方案,为工业自动化工程师实施RFID项目提供了清晰的指导。

weixin_29161785的博客 386

数据结构--串的基本操作

串(即字符串)是一种特殊的线性表,在信息检索、文本编辑等领域有广泛的应用。其特殊性体现在组成线性表的每个数据元素是单个字符,而由一个个字符串起的字符串却是最基本的非数值数据,在操作过程中常常作为一个整体来处理。研究串的特点、存储结构和基本操作实现,是非常有必要的。串是由零个或任意多个字符组成有限序列。一般记为:s="a1a2a3...an"(n>=0)串可以是字母、数字或其他字符,n为串的长度。1、串的基本概念串是一种特殊的线性表,规定每个数据元素仅由一个字符组成。

m0_62476845的博客 1万+

SAP-ABAP:字符与数值类型转换详细指南

SAP-ABAP:字符与数值类型转换详细指南

baidu_35680696的博客 1485

用群辉NAS打造影视墙(Jellyfin篇)

之前的文章提到过,用群辉NAS组建影视播放系统可以采用官方提供的Video Station套件,不过影视信息配比较差,响应速度也欠佳,今天我们就聊聊别的套件。在影音媒体方面,常见的还有Emby、Plex、Jellyfin。本文主讲Jellfin的原因是它胜在免费,而且功能比较齐全,完全够用。详细信息可以参考Jellyfin的官网:https://jellyfin.org/

dgnankai的专栏 7325

串的定长顺序存储表示

1.串的定长顺序存储表示 #define   MAXSTRLEN   255              //用户可在255以内定义最大串长 typedef     unsigned  char      SString[MAXSTRLEN +1];     //0号单元存放串的长度 2.基本操作的函数原型 1)初始化 Status InitStr(SString &amp;S); ...

Bee_Darker的博客 5017

Python爬虫实战:如何抓取POI信息(公共场所)位置信息

获取公共场所的信息:如餐厅、商店、医院、景点等。抓取POI的基本信息:如名称、类别、地址、评分等。获取POI的地理坐标:经度和纬度信息。存储POI数据:将抓取到的POI信息存储到本地数据库中。通过本篇文章,我们详细介绍了如何使用Python爬虫抓取POI信息。通过Google Maps API和OpenStreetMap(Overpass API),我们展示了如何获取餐厅、商店、医院等公共场所的位置信息,并进一步探讨了如何处理分页、存储数据以及反爬虫策略。

2201_76125261的博客 380

定长顺序存储串的连接c语言,c语言版数据结构(奇迹冬瓜)-串(定长顺序存储各项操作)...

//-----头文件------#include#include//------宏定义------#define MAXSTRLEN 255#define OVERFLOW -2#define TURE 1#define ERROR 0//-------类型名替换--------typedef unsigned char SString[MAXSTRLEN+1];typedef int Bool;...

weixin_30273229的博客 504

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

串的顺序存储c语言,数据结构 串的基本操作(顺序存储方式)

已结贴√问题点数:6回复次数:4 数据结构 串的基本操作(顺序存储方式)//采用定长顺序存储来表示串的基本操作#include#include#include#define MAXSIZE 225typedef struct{char str[MAXSIZE];int length;} SeqString;int StrInsert(SeqString *S, int i, SeqStrin...

weixin_36171481的博客 913

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

数据结构(C语言版)——二叉树的顺序存储结构(代码版)

一、代码 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #define OK 1 #define ERROR 0 #define MAXSIZE 30 typedef int Status; typedef struct biTree{ char data[MAXSIZE]; }BITREE,*BITREEPOINTER; int printMe

qq_42683219的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

数据结构_串_顺序结构(C语言)

目录(一)串(二)串代码解析1、串的基本操作1.01 串的基本结构1.02 串的创建1.03 串的遍历1.04 串的匹配1.05 串的连接1.06 串的比较1.07 串的长度1.08 串的复制1.09 串的清空1.10 串的销毁2、串源代码及测试2.1 源代码:2.2 测试 (一)串 串的顺序结构和顺序表的结构一样, 串的区别仅仅是在顺序表数据类型的区别,串的数据类型是字符型, 接下来我将实现串的一些基本操作,其中一些基本操作类似于头文件< string >的内置函数 (二)串代码解析 1、

小黯 1970

顺序串的基本操作(C实现)

一、概念 顺序结构的存储空间都是事先定义的,顺序串也不例外,故也可成为 定长顺序串,它的存储类型是字符串的char类型。 二、具体实现 1.结构体定义 #include<stdio.h> #include<stdlib.h> #include<string.h> #define true 1 #define false 0 #define max 20 typedef struct { char data[max]; int length; }SString

m0_61395860的博客 7899

【数据结构基础】-串-顺序结构的基本操作实现

2019.10.12        数据结构中串的基本操作实现,包括串的定义,串的初始化,赋值,获取串的长度,串的比较,连接串,求子串,清空串。        语言:c语言        运行环境:dev #include <stdio.h> #include&l...

qq_33820545的博客 942

数据结构——顺序串(定义初始化、赋值、遍历、两串比较)

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

qq_51231048的博客 4423

数据结构学习笔记——串的基本知识(顺序存储结构实现串)

(一)定长顺序存储 通过静态数组实现定长顺序存储,一组地址连续的存储单元存储串值的字符序列,其中每个串都被分配一个固定长度的ch[MAXLEN]数组。 (二)变长分配存储(堆分配存储) 而当序列的长度超过事先限定的MAXLEN值时,则此时可以采用变长分配存储,适用于串长较灵活的情况。与定长顺序存储一样,也是采用一组地址连续的存储单元来存放串值的字符序列,但堆分配存储的存储空间是的,通过malloc()和free()函数来完成动态存储的分配和释放。 三、串的初始化 四、判断串是否为空 五、串的建立 串的建

小宇y的博客 8539

串的存储结构

串(一种只有字符元素的线性表)串的存储结构:顺序存储,链式存储,基于顺序存储实现基本操作。

m0_74358710的博客 873

【数据结构】串的基本操作原来可以这样实现……

【数据结构】第四栈——串 详细介绍C语言实现串的基本操作……

蒙奇D索大的博客 1504

【数据结构】串 详解

串( string)是由零个或多个字符组成的有限序列,又名叫字符串。一般记为:一般记为:S = ′ a 1 a 2 . . . a n ′ ( n > = 0 )其中,S 是串名,单引号括起来的字符序列是串的值;a n 可以是字母、数字或其他字符;串中字符的个数n 称为串的长度。空串:n = 0 n=0n=0时的串称为空串。空格串:是只包含空格的串。注意它与空串的区别,空格串是有内容有长度的,而且可以不止一个空格。

Cerulea_n的博客 1142

数据结构——串的基本操作(C语言,究极简单,完整实现)

串 文章目录串前言一、串是什么?二、该如何理解串?三、各类串的形式四、串的实现1.串的实现1.1 引入库以及设置结构体1.2初始化串1.3求子串的功能实现1.4两串比较的功能实现1.5定位功能1.6求串的长度功能1.7串的输出功能1.8判断串的是否为空功能1.8主函数实现上述全部功能总结 前言 本文就介绍了数据结构中串的基本操作的编程实现,掌握串的建立、遍历,求子串,定位等基本操作 提示:以下是本篇文章正文内容,下面案例可供参考 有更简洁的代码实现,请移步 一、串是什么? 在计算机程序设计中,字符串

明宇逸风的博客 1万+

数据结构顺序串的基本操作(C语言)

串的定义 串(string)是零个或多个字符组成的有限序列。一般记为:S="a1a2…an"(n≥0) 其中S是串的名字,用双引号括起来的字符序列是串的值,但双引号是界限符,它不属于串,其作用是避免与变量名或常量混淆。ai(1≤i≤n)称为串的元素,它可以是任意字母、数字或其他字符,是构成串的基本单位,i是它在整个串中的序号。n是串中字符的个数,称为串的长度,表示串中所包含的字符个数。例如串S1="abcd",串的每一个元素为一个字母,其长度为4。而S2="12345",串的每一个元素为一个数字,其长

多低调的博客 5653
上一篇: c语言版数据结构(奇迹冬瓜)-单链式队列
下一篇: C编程解线性代数二阶三阶矩阵(奇迹冬瓜)
utral董东东
博客等级 码龄16年 158粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值