/* 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);
}
分享到:
相关推荐
基于字符串模式匹配算法的病毒感染检测问题——C语言实现。
本代码实现了敏感词检测。findcode是一个用来将敏感词与句子中排序后的单词先按字母顺序排序然后进行逐一比较的函数;如果两者相同,则return1;用数组下标0-25分别表示a-z字母,对应的每个下标对应的数组元素的值...
本资源是我在Linux下编写的有关数据结构串的基本操作的实现,你可以直接下载解压,查看具体的代码
检测鼠标.txt 汉字字模.txt 汉诺塔.txt 汉诺塔2.txt 灯塔问题.txt 猴子和桃.txt 百鸡百钱.txt 矩阵乘法动态规划.txt 矩阵转换.txt 硬币分法.txt 神经元模型.txt 穷举搜索法.txt 符号图形.txt 简单...
检测鼠标.txt 汉字字模.txt 汉诺塔.txt 汉诺塔2.txt 灯塔问题.txt 猴子和桃.txt 百鸡百钱.txt 矩阵乘法动态规划.txt 矩阵转换.txt 硬币分法.txt 神经元模型.txt 穷举搜索法.txt 符号图形.txt 简单...
数据结构实验内容:线性表(顺序表实现)、线性表(单链表实现)、栈、字符串、多维数组(三元组表存矩阵)、二叉树(二叉链表和顺序表存储)、邻接表存图以及图的遍历、排序 实验报告部分只要求了线性表、栈、多维...
检测鼠标.c ./效验算法: C.BAT CMCRC.COM Crctable.c ./数学问题: 乘法矩阵.c 凉东问题 十五人排序.c 叠代整除.c 四分砝码.c 圆周率 多位阶乘2.c 多位阶乘.c 大加数.c 大小倍约.c 大整数.c 完数.c 小孩分...
---包装数据结构以供应用程序使用----而不在数据结构算法本身,接口的示例和实现都以literate程序的方式给出,换句话说就是源代码及其解释是按照最适合理解代码的顺序交织出现的。 下面我将我想要给大家讲的内容分...
《超实用的jQuery代码段》的代码跨平台、跨设备、跨浏览器,充分向读者演示了如何使用jQuery的各项技术,实现令人激动的网页效果。 《超实用的jQuery代码段》从jQuery框架的使用原理与应用场景出发,对最实用的...
(2)分别为继承和组合方式下为各类添加构造函数、析构函数,增加相应测试代码,体验对象的初始化和构造顺序。 (3)将摄像机类和行车记录仪类功能相近的函数(如拍摄、编码等功能函数)设为同名函数,增加相应测试...
灰度顺序二进制字符串的BGRC算法, BGRC 对灰度级多基数的推广, Steinhaus-Johnson-Trotter 用于按灰色顺序排列, Knuth-Ruskey 用于灰阶完全无环偏序集的理想(又名“蜘蛛挤压”), Varol-Rotem 用于偏序集...
所有案例的讲解都非常详细,不仅有功能需求分析和完整实现代码,而且还有最终效果的展示,更重要的是,将所有理论知识都巧妙地贯穿于其中,非常易于读者理解。如果读者能在阅读本书的过程中逐一亲手实现这些案例,在...
7.4.html 检测onkeydown事件与onkeypress事件执行的先后顺序。 7.5.html 窗口离开时提示。 7.6.html 防止onresize事件重复执行。 7.7.html onerror事件相关处理。 7.8.html onsubmit事件使用...
C语言程序源代码(大集合).rar 实际只有139个,其余部分丢失! 第一部分 基础篇 001 第一个C程序 002 运行多个源文件 003 求整数之积 004 比较实数大小 005 字符的输出 006 显示变量所占字节数 007 自增/自...
源代码使用方法是(以实例1为例): 将该实例的源码,比如实例1的1.c文件(可以在001目录下找到), 拷贝到tc编译器目录下,运行tc.exe,打开编译器, 按【F3】键或者“File->Open”菜单命令,打开1.c文件, 按...
代码范例列表 第1章 示例描述:本章演示如何开始使用JDK进行程序的开发。 HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载...
实例068 将若干字符串按照字母顺序输出 85 2.3 指针与函数 86 实例069 用指向函数的指针比较大小 86 实例070 使用返回指针的函数查找最大值 88 实例071 使用指针函数求学生成绩 89 实例072 寻找指定元素...
代数多项式是一个包含变量和常数的表达式,其中包括加法、减法、乘法等运算。以下是对Python实现代数多项式运算的一般步骤的描述...测试运算功能:编写测试代码,调用多项式类的各种运算方法,并输出结果进行验证。 需
这篇文章主要介绍了基于python3实现倒叙字符串,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 google测试工程师的一道题: 设计一个函数,使用任意语言,完成...