数据结构实验5:串子系统
验证性实验5:串子系统
班级学号 20 姓名 施程程
1.实验目的
(1)掌握串的特点及顺序定长存储的方式。
(2)掌握串的创建、连接、插入、删除、显示等操作。
(3)掌握串的查找、取子字符串、比较串大小的操作
(4)掌握模式匹配的基本思想及其算法。
2.实验内容
(1)由用户通过键盘输入建立一个字符串。
(2)编写插入、删除、查找、比较、取子字符串、连接字符串、显示、模式匹配等程序。
(3)设计一个选择式菜单,以菜单方式选择上述操作。
串 子 系 统
******************************************** * 1------输 入 字 串 * * 2------连 接 字 串 * * 3------取 出 子 串 * * 4------删 除 子 串 * * 5------插 入 子 串 * * 6------查 找 子 串 * * 7------比 较 串 大 小 * * 8------显 示 字 串 * * 0------返 回 * ********************************************
请输入菜单选项(0--8):
3.实验程序
#include <stdio.h>
#define STRINGMAX 100
typedef struct
{ char vec [STRINGMAX];
int len;
}str;
void ConcatStr(str *r1,str *r2)
{ int i;
printf("\n\t\tr1=%s r2=%s\n",r1->vec,r2->vec);
if (r1->len+r2->len>STRINGMAX)
printf("\n\n\t 两个串太长,溢出!\n");
else
{ for (i=0;i<r2->len;i++)
r1->vec[r1->len+i]=r2->vec[i];
r1->vec[r1->len+i]='0';
r1->len=r1->len+r2->len;
}
}
void SubStr(str *r,int i,int j)
{ int k;
str a;
str *r1=&a;
if (i+j-1>r->len)
{ printf ("\n\t\t子串超界!\n");
return;
}
else
{for (k=0;k<j;k++)
r1->vec[k]=r->vec[i+k-1];
r1->len=j;
r1->vec[r1->len]='\0';
}
printf("\n\t\t取出字符为:");
puts(r1->vec);
}
void DelStr(str *r,int i,int j)
{int k;
if(i+j-1>r->len)
printf("\n\t\t所要删除的子串超界!\n");
else
{for (k=i+j;k<r->len;k++,i++)
r->vec[i]=r->vec[k];
r->len=r->len-j;
r->vec[r->len]='\0';
}
}
str *InsStr(str *r,str *r1,int i)
{int k;
if(i>=r->len||r->len+r1->len>STRINGMAX)
printf("\n\t\t不能插入!\n");
else
{ for(k=r->len-1;k>=i;k--)
r->vec[r1->len+k]=r->vec[k];
for(k=0;k<r1->len;k++)
r->vec[i+k]=r1->vec[k];
r->len=r->len+r1->len;
r->vec[r->len]='\0';
}
return r;
}
int IndexStr(str *r,str *r1)
{int i,j,k;
for(i=0;r->vec[i];i++)
for(j=i,k=0;r->vec[j]==r1->vec[k];j++,k++)
if(!r1->vec[k+1])
return i;
return -1;
}
int LenStr(str *r)
{int i=0;
while(r->vec[i]!='\0')
i++;
return i;
}
str*CreateStr(str *r)
{ gets(r->vec);
r->len=LenStr(r);
return r;
}
int EqualStr(str *r1,str *r2)
{for(int i=0;r1->vec[i]&&r2->vec[i]&&r1->vec[i]==r2->vec[i];i++);
return r1->vec[i]-r2->vec[i];
}
void main()
{str a,b,c,d;
str *r=&a,*r1;
r->vec[0]='\0';
char choice,p;
int i,j,ch=1;
while(ch!=0)
{ printf("\n"); printf("\n\t\t 串子系统 "); printf("\n\t\t*********************************************"); printf("\n\t\t* 1------输 入 字 串 *"); printf("\n\t\t* 2------连 接 字 串 *"); printf("\n\t\t* 3------取 出 子 串 *"); printf("\n\t\t* 4------删 除 子 串 *"); printf("\n\t\t* 5------插 入 子 串 *"); printf("\n\t\t* 6------查 找 子 串 *"); printf("\n\t\t* 7------比较 串大小 *"); printf("\n\t\t* 8------显 示 字 串 *"); printf("\n\t\t* 0------返 回 *"); printf("\n\t\t*********************************************");
printf("\n\t\t 请选择菜单号(0--8): ");
scanf("%c",&choice);
getchar();
if(choice=='1')
{printf("\n\t\t请输入一个字符串:");
gets(r->vec);
r->len=LenStr(r);
}
else if(choice=='2')
{printf("\n\t\t请输入所要连接的串:");
r1=CreateStr(&b);
ConcatStr(r,r1);
printf("\n\t\t连接以后的新串值为:");
puts(r->vec);
}
else if(choice=='3')
{printf("\n\t\t请输入从第几个字符开始:");
scanf("%d",&i);getchar();
printf("\n\t\t请输入取出的连续字符数:");
scanf("%d",&j);
getchar();
SubStr(r,i,j);
}
else if(choice=='4')
{printf("\n\t\t请输入从第几个字符开始:");
scanf("%d",&i);getchar();
printf("\n\t\t请输入删除的连续字符数:");
scanf("%d",&j);
getchar();
DelStr(r,i-1,j);
}
else if(choice=='5')
{
printf("\n\t\t 请输入在第几个字符前插入: "); scanf("%d",&i); getchar(); printf("\n\t\t 请输入所要插入的字符串: "); r1=CreateStr(&b); InsStr(r,r1,i-1);
}
else if(choice=='6')
{
printf("\n\t\t 请输入所要查找的字符串: "); r1=CreateStr(&b);
i=IndexStr(r,r1); if(i!=-1) printf("\n\t\t 第一次出现的位置是第%d个.\n",i+1); else printf("\n\t\t 该字串不在其中! \n");
相关推荐:
- [专业资料]《蜜蜂之家》教学反思
- [专业资料]过去分词作定语和表语1
- [专业资料]苏州工业园区住房公积金贷款申请表
- [专业资料]保安管理制度及处罚条例细则
- [专业资料]2018年中国工程咨询市场发展现状调研及
- [专业资料]2015年电大本科《学前教育科研方法》期
- [专业资料]数字信号处理实验 matlab版 离散傅里叶
- [专业资料]“十三五”重点项目-虎杖白藜芦醇及功
- [专业资料]2015-2020年中国竹木工艺市场需求及投
- [专业资料]国际贸易理论与实务作业五:理论案例分
- [专业资料]财政部修订发布事业单位会计制度
- [专业资料]BCA蛋白浓度测定试剂盒(增强型)
- [专业资料]工程进度总计划横道图模板(通用版)
- [专业资料]七年级地理同步练习(天气与气候)
- [专业资料]X光安检机介绍火灾自动报警系统的组成
- [专业资料]衢州市人民政府办公室关于印发衢州市区
- [专业资料]经济全球化及其影响[1]
- [专业资料]质粒DNA限制性酶切图谱分析
- [专业资料]国家安全人民防线工作“六项”制度
- [专业资料]劳动力投入计划及保证措施
- 电子账册联网监管培训手册
- 人教版语文七年级上第1课《在山的那边
- 对我区担保行业发展现状的思考与建议
- 平面四边形网格自动生成方法研究
- 2016年党课学习心得体会范文
- 如何设置电脑定时关机
- 全球最美人妖排行榜新鲜出炉
- 社会实践调查报告及问卷
- Visual Basic习题集
- 《鱼我所欲也》课件2
- 浙江省会计从业资格考试试卷
- 全遥控数字音量控制的D 类功率放大器资
- 鞍钢宪法与后福特主义
- 电表的改装与校准实验报告(1)
- 2014年高考理科数学真题解析分类汇编:
- Windows 7 AIK 的使用
- 风电场全场停电事故应急处置方案
- 化工原理选填题题库(下)
- 关于产学研合作教育模式的学习与思考
- 西安先锋公馆项目前期定位报告




