`
Dev|il
  • 浏览: 125238 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

串的顺序实现

 
阅读更多
串的顺序实现

串的顺序结构实现有弊端:
1.串的最大长度固定
2.当串的长度超过MAXSTRLEN时,采用截尾法处理,这种方法不仅在求串的连接时可能发生,还在串的插入,置换也有可能发生.
#include <iostream>
using namespace std;

#define MAXSTRLEN 255 //用户可以在255以内定义最大串长
#define TURE 1
#define FALSE 0
#define ERROR 0
#define OK 1
typedef unsigned char SString[MAXSTRLEN + 1]; //0号单位存字符串的长度
typedef int Status;
//串

/**
**函数功能: 连接串s1和s2如果串s1+s2的长度大于MAXSTRLEN 则返回状态FALSE 否则返回TRUE
**/
Status Concat(SString &T, SString s1, SString s2)
{
	//用T返回s1和s2连接的新串,若未截断则返回true,否则返回false
	//截断分二种情况:
	//s1的长度s1[0] < MAXSTRLEN 而s1[0] + s2[0] > MAXSTRLEN 则表示截断
	//s1[0]>=MAXSTRELN
	int i, j, flag;
	i = j = 1;
	if(s1[0] + s2[0] - 2 * '0' <= MAXSTRLEN) //未截断
	{
		T[0] = s1[0] + s2[0] - '0';
		//对串进行复制
		//T[1...s1[0]] = s1[1...s1[0]]; T[s1[0] + 1....s2[0] + s1[0]] = s2[1...s2[0]];
		while(i <= T[0] - '0' && j <= s1[0] - '0')
				T[i++] = s1[j++];
		j = 1;
		while(i <= T[0] - '0' && j <= s2[0] - '0')
				T[i++] = s2[j++];
		flag = TURE;
	}else if(s1[0] - '0' < MAXSTRLEN)
	{
		while(j <= s1[0] - '0')
			T[i++] = s1[j++];
		j = 1;
		while(i <= MAXSTRLEN)
			T[i++] = s2[j++];
		T[0] = MAXSTRLEN;
		flag = FALSE;
	}else
	{
		while(i <= MAXSTRLEN)
			T[i++] = s1[j++];
		T[0] = MAXSTRLEN;
		flag = FALSE;
	}

	return flag;
}

/**
**函数功能:求子串,用sub返回串s的第pos个字符起长度为len的子串
**参数: sub:返回的子串
** s: 获取的串 
** pos: 起始位置  1<= pos <= s[0]
** len:长度  0<= len <= s[0] - pos + 1
**/
Status subString(SString &sub, SString s, int pos, int len)
{
	int i;
	if(pos < 1 || pos > s[0] - '0' || len < 0 || len > s[0]- '0' - pos + 1)
		return ERROR;
	sub[0] = len + '0';
	for(i = pos; i < pos + len; i++)
		sub[i - pos + 1] = s[i]; 
	return OK;
}
int main()
{
	SString s1 = "4abcd";
	SString s2 = "5efghi";
	SString T;
	//Concat(T, s1, s2);
	subString(T, s2, 1, 4);
	cout<<&T[1]<<endl;
	return 0;
}

分享到:
评论

相关推荐

    动态顺序串相关操作的实现

    在实现动态顺序串时,还需要注意一些关键点,例如错误处理(如插入或删除时越界)、内存管理(避免内存泄漏)以及效率优化(如合理选择扩容策略)。在实际编程中,可能会使用高级数据结构,如C++中的`std::vector`或...

    数据结构-顺序串基本操作实验报告.pdf

    在本实验报告中,主要探讨了如何在C++环境中实现顺序串的各种基本操作,包括串的赋值、复制、计算长度、判断相等、连接、求子串、插入、删除、替换以及输出和判断空串等操作。以下是对这些操作的详细说明: 1. **串...

    串的顺序存储操作

    顺序存储方式是最常见的字符串存储方法,因为它简单且易于实现。 首先,我们需要理解什么是串的顺序存储。在顺序存储结构中,字符串中的每个字符在内存中占据一个连续的位置。例如,如果有一个字符串 "Hello",在...

    数据结构C语言实现顺序串.cpp

    C语言实现字符串的操作,这里给出的资源是实现的源代码,读者可以参照代码加以修改,若有修改意见请联系本文博主一起商讨。代码都是基于C语言。

    10数据结构串顺序表实现功能.cpp

    10数据结构串顺序表实现功能.cpp

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

    初始化串可以通过直接赋值或动态分配内存来实现。例如: ```c char str[] = "Hello, World!"; ``` 2. **复制串**: 使用`strcpy()`函数可以复制一个字符串到另一个字符串。例如: ```c char dest[50]; ...

    java模拟顺序栈实现回文串的判断

    本主题将探讨如何使用Java语言通过模拟顺序栈来判断一个字符串是否为回文串。这个方法对于初学者来说是很好的实践,因为它涉及到基础的数据结构——栈,以及字符串处理技巧。 首先,我们需要理解栈(Stack)这种...

    数据结构 顺序串

    顺序串是指在内存中连续存储的字符序列,它的实现简单,操作直观,适合进行一些基础的字符串操作。 顺序串的基本操作包括插入、删除、查找等。在插入操作中,如果串已满,则需要考虑扩容;删除操作通常涉及移动元素...

    C语言数据结构顺序串

    顺序串的实现可以通过C语言来实现,下面是顺序串的实现代码: ```c #include #include #include #define MAXSIZE 100 #define NULL 0 typedef struct pointnode { int tag; char *t; } pnode; void Init_...

    顺序栈实现括号配对

    顺序栈实现括号配对 在计算机科学中,括号配对是指在一个表达式中,各种括号之间的匹配关系。例如,在一个数学表达式中,我们可以使用小括号、中括号和大括号来表示不同的操作优先级。然而,在实际应用中,我们需要...

    按照字符串顺序从小到大排序,删除重复字符

    标题中的任务是“按照字符串顺序从小到大排序,删除重复字符”,这通常是一个字符串处理的问题,涉及到了排序算法和字符数组的操作。在这个问题中,我们可以看到一个简单的C语言程序实现,它使用冒泡排序对字符串中...

    c语言实现字典顺序排序

    ### C语言实现字典顺序排序 #### 背景与目的 在计算机科学中,排序是一种常见的操作,用于将一组数据按照一定的顺序排列。本文档介绍了一个简单的C语言程序,该程序通过字典顺序(即字母顺序)对一组国家名称进行...

    利用创建VBScript对象实现字符串顺序取反例程

    在本例中,我们将探讨如何利用VBScript创建对象并使用StrReverse方法来实现字符串顺序的反转功能。这个技术常用于简单的自动化任务或者在网页交互中,尤其是在早期的ASP(Active Server Pages)开发中。 首先,让...

    C++模版类实现顺序栈、链栈

    本项目中,模版类被用来实现两种常见的数据结构——顺序栈和链栈,这两种栈都遵循后进先出(LIFO)的原则。下面我们将详细探讨这些知识点。 首先,**顺序栈**是基于数组实现的栈。在C++中,可以定义一个名为`...

    java 按照字母表顺序排列字符串列表

    以上就是实现"按照字母表顺序排列字符串列表"的主要步骤和技术要点。通过这个应用,开发者可以学习到Java集合、输入/输出、排序算法以及图形用户界面的基本知识。通过不断练习,这些基础将有助于构建更复杂的Java...

    字符串顺序储存1

    在本文件中,我们看到一个顺序存储字符串(seqstring)的结构体定义以及一系列与字符串操作相关的函数,包括创建、插入、删除、连接、获取子串以及比较字符串。 首先,`seqstring`结构体包含了两个成员:一个最多能...

    数据结构串的存储结构程序

    在这个程序中,我们使用了顺序存储结构来存储串,即将串存储在一个连续的内存块中。这是一种简单和高效的存储结构,但它也存在一些缺陷,如插入和删除操作的效率较低。在实际应用中,我们可以根据具体情况选择合适的...

    顺序串的各种模式匹配

    顺序串的模式匹配是计算机科学中字符串处理的一个重要问题,主要应用于文本检索、数据分析等领域。在给定的实验中,我们需要实现一个简单的模式匹配算法,用于判断一个模式串(Pattern)是否存在于主串(Main String...

    顺序表测试1_WordforWord_用顺序表实现词频统计_

    在本文中,我们将深入探讨如何使用C语言实现一个顺序表来统计单词的出现频率。顺序表是一种基础的数据结构,它将元素存储在一个连续的内存区域中,通过索引来访问元素,具有简单直观的操作方式。 首先,我们需要...

Global site tag (gtag.js) - Google Analytics