当前位置:   article > 正文

【数据结构】串(定长顺序串、堆串、块链串)的存储结构及基本运算(C语言)_串堆结构c语言

串堆结构c语言

1. 串的基本概念

字符串(String)是由零个或多个字符组成的有限序列。记为 S = ‘a1a2…an’(n>0)
其中,S是串的名字,用单引号括起来的字符序列是串的值,每个 ai(1<=i<=n)可以是字母、数字或其它字符。n是串中字符的个数,称为串的长度,n=0时的串称为空串。

子串:串中任意个连续的字符组成的子序列称为该串的子串。
主串:包含子串的串称为主串。
子串在主串中的位置:通常将字符在串中的序号称为该字符在串中的位置。子串在主串中的位置则以子串的第一个字符在主串中的位置来表示。
串相等:当且仅当两个串的值相等时,称这两个串是相等的,即只有当两个串的长度相等,并且每个对应位置的字符都相等时才相等。

串是一种特定的线性表,串的逻辑结构和线性表极为相似,其特定性仅在于串的数据对象限定为字符集。常用的实现方法有定长顺序串、堆串和块链串。

串的模式匹配(简单模式匹配算法、KMP算法)见:https://blog.csdn.net/weixin_51450101/article/details/122684649

2. 定长顺序串

定长顺序串是将串设计成一种静态结构类型,用一组地址连续的存储单元来存储串的字符序列。

2.1 代码+注释

# include<stdio.h>
# define MAXLEN 40
# define TRUE 1
# define FALSE 0

/*定长顺序串*/
/*定长顺序串的存储结构*/
typedef struct {
   
	char ch[MAXLEN];
	int len;			//字符串长度
}SString;

/*定长顺序串初始化*/
void StrInit(SString* S) {
   
	S->len = 0;
}

/*定长顺序串的创建*/
void StrCreate(SString* S) {
   
	int n, i;
	printf("字符串长度为:");
	scanf("%d", &n);
	printf("请输入字符串:");
	for (i = 0; i < n; i++) {
   
		scanf(" %c", &(S->ch[i]));
	}
	S->len = n;
}

/*插入*/
int StrInsert(SString* S, int pos, SString *t) {
   
//在串S中下标为pos的字符之前插入串t
	int i;
	if (pos < 0 || pos > S->len)				//插入位置不合法
		return FALSE;
	if (S->len + t->len <= MAXLEN) {
   			//插入后串长<=MAXLEN
		for (i = S->len + t->len - 1; i >= t->len + pos; i--)
			S->ch[i] = S->ch[i - t->len];		//位置pos后的字符串后移
		for (i = 0; i < t->len; i++)
			S->ch[i + pos] = t->ch[i];			//将t串插入
		S->len = S->len + t->len;
	}
	else if (pos + t->len <= MAXLEN) {
   			//插入后串长大于MAXLEN,但串t的字符序列可以全部插入
		for (i = MAXLEN - 1; i > t->len + pos - 1; i--)
			S->ch[i
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/523819
推荐阅读
相关标签
  

闽ICP备14008679号