`
109735215
  • 浏览: 33186 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

串顺序实现的代码 测试

 
阅读更多

/* c1.h (程序名) */
#include<string.h>
#include<ctype.h>
#include<malloc.h> /* malloc()等 */
#include<limits.h> /* INT_MAX等 */
#include<stdio.h> /* EOF(=^Z或F6),NULL */
#include<stdlib.h> /* atoi() */
#include<io.h> /* eof() */
#include<math.h> /* floor(),ceil(),abs() */
#include<process.h> /* exit() */
/* 函数结果状态代码 */
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
/* #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行 */
typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef int Boolean; /* Boolean是布尔类型,其值是TRUE或FALSE */
/* c4-1.h 串的定长顺序存储表示 */
#define MAX_STR_LEN 40 /* 用户可在255(1个字节)以内定义最大串长 */
typedef char SString[MAX_STR_LEN+1]; /* 0号单元存放串的长度 */

Status StrAssign(SString T,char *chars)
{ /* 生成一个其值等于chars的串T */
int i;
if(strlen(chars)>MAX_STR_LEN)
return ERROR;
else
{
T[0]=strlen(chars);
for(i=1;i<=T[0];i++)
T[i]=*(chars+i-1);
return OK;
}
}

void StrPrint(SString T)
{ /* 输出字符串T。另加 */
int i;
for(i=1;i<=T[0];i++)
printf("%c",T[i]);
printf("/n");
}

int StrCompare(SString S,SString T)
{ /* 初始条件:串S和T存在。操作结果:若S>T,则返回值>0;若S=T,则返回值=0;若S<T,则返回值<0 */
int i;
for(i=1;i<=S[0]&&i<=T[0];++i)
if(S[i]!=T[i])
return S[i]-T[i];
return S[0]-T[0];
}
Status SubString(SString Sub,SString S, int pos,int len)
{
int i;
if(pos<1||pos>S[0]||len<0||len>S[0]-pos+1)
return ERROR;
for(i=1;i<=len;i++)
Sub[i]=S[pos+i-1];
Sub[0]=len;
return (*Sub);
}

int Index(SString S,SString T,int pos)
{ /* 返回子串T在主串S中第pos个字符之后的位置。若不存在,则函数值为0。 */
/* 其中,T非空,1≤pos≤StrLength(S)。算法4.5 */
int i,j;
if(1<=pos&&pos<=S[0])
{
i=pos;
j=1;
while(i<=S[0]&&j<=T[0])
if(S[i]==T[j]) /* 继续比较后继字符 */
{
++i;
++j;
}
else /* 指针后退重新开始匹配 */
{
i=i-j+2;
j=1;
}
if(j>T[0])
return i-T[0];
else
return 0;
}
else
return 0;
}
Status StrInsert(SString S,int pos,SString T)
{ /* 初始条件:串S和T存在,1≤pos≤StrLength(S)+1 */
/* 操作结果:在串S的第pos个字符之前插入串T。完全插入返回TRUE,部分插入返回FALSE */
int i;
if(pos<1||pos>S[0]+1)
return ERROR;
if(S[0]+T[0]<=MAX_STR_LEN)
{ /* 完全插入 */
for(i=S[0];i>=pos;i--)
S[i+T[0]]=S[i];
for(i=pos;i<pos+T[0];i++)
S[i]=T[i-pos+1];
S[0]+=T[0];
return TRUE;
}
else
{ /* 部分插入 */
for(i=MAX_STR_LEN;i>=pos+T[0];i--)
S[i]=S[i-T[0]];
for(i=pos;i<pos+T[0]&&i<=MAX_STR_LEN;i++)
S[i]=T[i-pos+1];
S[0]=MAX_STR_LEN;
return FALSE;
}
}
//////////////////////////////
void main()
{
int i,j;
Status k;
char s,c[MAX_STR_LEN+1],d[MAX_STR_LEN+1];
SString t,s1,s2,s3;
printf("请输入串s1: ");
gets(c);
k=StrAssign(s1,c);
StrPrint(s1);
printf("请输入串s2: ");
gets(d);
k=StrAssign(s2,d);
StrPrint(s2);
i=StrCompare(s1,s2);
printf("i=%d/n",i);

k=SubString(s3,s2,2,2);
StrPrint(s3);
j=Index(s1,s2,2);

printf("=%d/n",j);
StrInsert(s2,2,s1);
StrPrint(s2);
printf("/n");
StrPrint(s1);
}

分享到:
评论

相关推荐

    顺序串类的源代码

    本篇将深入探讨顺序串类的实现原理和常见操作,以及如何通过源代码进行理解和测试。 首先,顺序串的实现通常涉及到一个字符数组来存储字符串内容。数组的长度通常会预设一个上限,以防止动态扩展带来的额外开销。在...

    串口测试的几种测试代码

    本文将深入探讨几种常见的串口测试代码及其应用,以帮助开发者更好地理解和掌握串口通信技术。 首先,我们需要了解串口通信的基础概念。串行通信是指数据以位(bit)为单位按顺序传输,通常包括RS-232、RS-485、USB...

    带CRC校验功能的串口通信源代码(包含主机和从机源代码和说明文档)

    本资源提供的是一套带CRC校验功能的串口通信源代码,包括主机和从机的实现,以及相应的说明文档。CRC校验是一种错误检测方法,用于确保数据在传输过程中没有错误。 首先,我们来理解串口通信的基本概念。串口通信,...

    golang测试代码,简单串口服务测试

    本项目涉及的是一个Golang实现的串口服务测试,主要关注的是如何使用Go进行串口通信以及进行测试。串口通信是计算机通信的一种方式,常用于设备间的短距离通信,如嵌入式系统、打印机、GPS模块等。 首先,我们要...

    C++串口通信代码

    上位机(如C++代码实现的程序)和单片机之间通过串口进行数据交互,一般涉及数据格式的约定,例如如何表示数据包的开始和结束,以及错误检测机制。上位机接收到数据后,会解析并显示在窗体上,这可能涉及到GUI(图形...

    数据结构 顺序串

    你可能需要阅读或研究压缩包中的"顺序串"文件,文件中可能包含了代码示例、练习题以及算法的详细解释。通过分析和实践这些材料,可以更直观地掌握顺序串和BMP算法的实现细节,通过编程实践来提升编码能力。同时,与...

    数据结构串的源代码.rar

    本资源“数据结构串的源代码.rar”聚焦于一个特定的数据结构——串(String),并提供了相关的源代码实现,这对于学习和理解数据结构以及算法的实现具有极大的帮助。 串,作为数据结构的一种,是指由零个或多个字符...

    c#串口收发数据代码.doc

    6. **发送数据的方法**:虽然代码片段中未给出发送数据的具体实现,但根据上下文推测,可以通过类似的方式实现。例如,可以创建一个按钮点击事件处理函数,用于获取用户输入的十六进制字符串,将其转换为字节数组并...

    串口精灵232代码

    在编程实践中,对于RS232文件,可能是包含了实现串口通信的具体代码文件,如C源码、Python脚本或者配置文件。开发者需要根据项目需求,导入这些文件,结合自己的应用程序进行整合,以便实现串口通信功能。 总之,...

    队列实现字符串逆序代码

    # 测试代码 s = "hello, world!" print(reverse_string_with_queue(s)) ``` 这个例子中,我们使用了Python的`collections.deque`作为队列实现,因为它提供了高效的O(1)时间复杂度的入队和出队操作。在实际应用中,...

    串口测试程序源码

    "SerialTest"可能是项目的主要源代码文件,其中包含了串口操作的具体实现,包括初始化串口、设置波特率、数据位、停止位、校验方式等参数,以及数据的发送和接收逻辑。 在实际应用中,串口测试程序可以帮助开发者...

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

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

    顺序串的各种模式匹配

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

    不规则任意字符串产生代码

    不规则字符串通常指的是包含随机字符(如字母、数字、特殊符号)的字符串,这些字符没有特定的顺序或模式。它们的长度和组成可以是随机的,也可以根据需求预设。 在VB.NET中,生成这种字符串的主要方法之一是利用`...

    接口通信课程设计——双机串口通信 汇编实现

    源代码会展示如何用汇编语言实现字符和文件的发送与接收功能。字符通信相对简单,直接发送ASCII码即可;而文件通信则涉及到文件读取、缓冲区管理和数据分包等多个步骤。 在实现文件传输时,我们通常会先将文件读入...

    STM8S003串口最小代码例程

    STM8S003串口最小代码例程是专为STM8S003和STM8S103微控制器设计的一个基础应用示例,它主要用于实现串行通信功能,包括数据的发送与接收。STM8系列是意法半导体(STMicroelectronics)推出的一系列8位微控制器,...

    RS232_串口测试程序

    下面将详细讨论串口通信的基本概念、RS-232标准以及如何通过`serial_1.c`这样的C语言源代码文件进行串口测试。 1. **串口通信基础**: 串口通信,也称为串行通信,是指数据逐位按顺序传输的方式,与并行通信(同时...

    数据结构线性表的顺序和链式实现

    通过阅读和分析给出的代码示例,比如"线性表顺序存储.CPP"和"LinkList.cpp"文件,可以加深对这两种数据结构实现的理解,提升编程能力。此外,实际动手实现这些操作并进行测试,是加深理解并巩固知识点的有效方式。...

    数据结构——串实践报告.doc

    1. **实现串的定长顺序存储表示的基本操作**:这通常包括创建新串(`StrAssign`)、复制串(`StrCopy`)、检查串是否为空(`StrEmpty`)等。在提供的代码中,可以看到这些操作的具体实现。 - `StrAssign`函数用于...

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

    文件名"串"可能包含了实现这些基本操作的C源代码文件,可能包括头文件(定义接口)和实现文件(实现函数逻辑)。 7. **测试与调试** 实现串操作后,编写单元测试用例来验证功能的正确性,使用`assert()`或其他调试...

Global site tag (gtag.js) - Google Analytics