实验三 串基本操作的编程实现
【实验目的】
内容:串基本操作的编程实现
要求:
串基本操作的编程实现(2学时,验证型),掌握串的建立、遍历、插入、删除等基本操作的编程实现,也可以进一步编程实现查找、合并、剪裁等操作,存储结构可以在顺序结构或链接结构、索引结构中任选,也可以全部实现。也鼓励学生利用基本操作进行一些应用的程序设计。
【实验性质】
验证性实验(学时数:2H)
【实验内容】
字符串用常规的顺序存储法来存储,实现常用的功能。
自己编程模式:开发一个程序,用来统计文件中各种信息,如字符个数,行数等。
修改程序模式:将下面程序空白的地方填空。
程序检查模式:将本文件夹中的程序运行后总结相关功能。
【思考问题】
字符串的顺序存储和链表存储的差异?C语言中是如何实现字符串的?
在字符串处理方面主要有什么操作?
字符串的操作的主要特点是什么?
举出几个字符串的应用范例?
【参考代码】
//功能:顺序串的基本基本功能
#include
#include
#include
#include
#define maxsize 30//顺序串的总空间大小
enum returninfo{success,fail,overflow,underflow,range_error,empty};//定义返回信息清单
class string
{
public:
string();//构造函数
~string();//析构函数
returninfo strcreate(); //创建串
returninfo strinsert(int position,char newstr[],int str_length); //插入
returninfo strdelete(int beginposition,int endposition); //删除
returninfo strmodify(int beginposition,int endposition,char newstr[]); //修改
int strsearch(char newstr[]); //查找
void strtraverse(); //遍历
int strlength();//求串长
private:
char *str; //串
int length; //长度
};
string::string()
{
str=new char[maxsize];//申请数组空间
}
string::~string()
{}
returninfo string::strcreate()
{
int i=-1,ch;
cout<
while((ch=getch())!=26)
{
cout<
i++;
if(ch!=13)
str[i]=char(ch);
else i=i-1;
cout.flush();//为了每次输入后可以立即显示所输入的字符,则先清除缓冲区
}
length=i+1;
cout<
return success;
}
returninfo string::strinsert(int position,char newstr[],int str_length)
//当插入的字符串在原串末尾时,就相当于合并
{
return success;
}
returninfo string::strdelete(int beginposition,int endposition)
{
return success;
}
returninfo string::strmodify(int beginposition,int endposition,char newstr[])
{
return success;
}
int string::strsearch(char newstr[])
{
int i=0,str_length,position=0,count=0; //是否相等标志,count用来确定比较时原串的移动
if(length==0)
return -1;
str_length=strlen(newstr);
for(;i
{
if(str[i]==newstr[count])
{posit