- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
南京信息工程大学数据结构实验(实习)报告
实验(实习)名称 串的应用 实验(实习)日期 2015-11-2 得分 指导教师 顾韵华
系 计软院 专业 计科 年级 2014级 班次 2
实验目的
1、掌握串的用法。
实验内容
1、设计一个算法,删去串s中从第i个字符开始的连续j个字符(以堆分配法表示串)。
2、若x和y是两个以堆分配法表示的串,请设计一个算法,找出x中第一个不在y中出现的字符。
3.一个文本串可用事先给定的字母映射表进行加密。例如,设字母映射表为:
a
b
c
d
e
f
g
h
i
j
n
g
z
q
t
c
o
b
m
u
k
l
m
n
o
p
q
r
s
t
h
e
l
k
p
d
a
w
x
f
u
v
w
x
y
z
y
i
v
r
s
j
则字符串encrypt被加密为tkzwsdf。
(1) 写一算法将输入的文本串进行加密后输出;
(2) 写一算法,将输入的已加密文本串进行解密后输出。
4、实现朴素的模式匹配算法。
三、
//设计一个算法,删去串s中从第i个字符开始的连续j个字符(以堆分配法表示串)。
#include stdio.h
#include string.h
#include malloc.h
#define OK 1
#define ERROR 0
typedef int Status;
typedef struct{ //堆分配法表示串的类型定义
char *ch; //存储区基址
int length; //串长
} HString;
Status strAssign(HString S,char *chars)
//生成一个其值等于串常量chars的串S
{
int i,j;
char *c;
if (S.ch) free(S.ch);
for (i=0,c=chars;*c!=\0;i++,c++); //求串chars的长度,存于i
if (!i) //chars为空串
{ S.ch=NULL; S.length=0; }
else
{ if (!(S.ch=(char *) malloc(i*sizeof(char))))
return ERROR;
for(j=0;ji;j++) S.ch[j]=chars[j];
S.length=i;
}
return OK;
}
Status strDelete(HString S,int i,int j)
//删除串S中从i开始的j个字符,串采用堆分配法存储
{
int k,m;
if (iS.length || i1)
return ERROR;
for (k=i+j-1,m=i-1;kS.length;k++,m++)
S.ch[m]=S.ch[k];
S.ch[m+1]=\0;
S.length=S.length-j;
return OK;
}
void printString(HString S)
{
int i;
for (i=0;iS.length;i++)
printf(%c,S.ch[i]);
printf(\n);
}
/* run this program using the console pauser or add your own getch, system(pause) or input loop */
int main()
{
HString S;
char str[]=This is a test string!;
printf(创建字符串S!\n);
if (strAssign(S,str)==ERROR)
{
printf(创建的字符串S失败!\n);
return 1;
}
printf(创建的字符串S为:);
printString(S);
printf(删除字符串S从3开始的4个字符:\n);
strDelete(S,3,4);
printf(删除字符后的字符串S为:\n);
printString(S);
return 0;
}
2、//若x和y是两个以堆分配法表示的串,请设计一个算法,找出x中第一个不在y中出现的字符
#include stdio.h
#include st
文档评论(0)