java 星期顺序_第8周 【项目3-顺序串算法】

/*

*Copyright  (c)2017,烟台大学计算机与控制工程学院

*All rights reservrd.

*作者:李欣豪

*完成时间:2017年12月14日

*版本号:v1.0

*问题描述:采用顺序存储方式存储串,实现下列算法并测试:

(1)试编写算法实现将字符串S中所有值为c1的字符换成值为c2的字符:

void Trans(SqString *&s, char c1, char c2);

(2)试编写算法,实现将已知字符串所有字符倒过来重新排列。如ABCDEF改为FEDCBA。

void Invert(SqString &s)

一、以顺序串算法库为基础,建立头文件sqString.h

#ifndef SqString_H_INCLUDED

#define SqString_H_INCLUDED

#define MaxSize 100 //最多的字符个数

typedef struct

{ char data[MaxSize]; //定义可容纳MaxSize个字符的空间

int length; //标记当前实际串长

} SqString;

void StrAssign(SqString &s,char cstr[]); //字符串常量cstr赋给串s

void StrCopy(SqString &s,SqString t); //串t复制给串s

bool StrEqual(SqString s,SqString t); //判串相等

int StrLength(SqString s); //求串长

SqString Concat(SqString s,SqString t); //串连接

SqString SubStr(SqString s,int i,int j); //求子串

SqString InsStr(SqString s1,int i,SqString s2); //串插入

SqString DelStr(SqString s,int i,int j) ; //串删去

SqString RepStr(SqString s,int i,int j,SqString t); //串替换

void DispStr(SqString s); //输出串

#endif // SqString_H_INCLUDED

建立源文件sqString.cpp

#include

#include

#include "SqString.h"

void StrAssign(SqString &s,char cstr[]) //s为引用型参数

{ int i;

for (i=0;cstr[i]!='\0';i++)

s.data[i]=cstr[i];

s.length=i;

}

void StrCopy(SqString &s,SqString t) //s为引用型参数

{ int i;

for (i=0;i

s.data[i]=t.data[i];

s.length=t.length;

}

bool StrEqual(SqString s,SqString t)

{ bool same=true;

int i;

if (s.length!=t.length) //长度不相等时返回0

same=false;

else

for (i=0;i

if (s.data[i]!=t.data[i]) //有一个对应字符不相同时返回0

{ same=false;

break;

}

return same;

}

int StrLength(SqString s)

{

return s.length;

}

SqString Concat(SqString s,SqString t)

{ SqString str;

int i;

str.length=s.length+t.length;

for (i=0;i

str.data[i]=s.data[i];

for (i=0;i

str.data[s.length+i]=t.data[i];

return str;

}

SqString SubStr(SqString s,int i,int j)

{ SqString str;

int k;

str.length=0;

if (i<=0 || i>s.length || j<0 || i+j-1>s.length)

return str; //参数不正确时返回空串

for (k=i-1;k

str.data[k-i+1]=s.data[k];

str.length=j;

return str;

}

SqString InsStr(SqString s1,int i,SqString s2)

{ int j;

SqString str;

str.length=0;

if (i<=0 || i>s1.length+1) //参数不正确时返回空串

return str;

for (j=0;j

str.data[j]=s1.data[j];

for (j=0;j

str.data[i+j-1]=s2.data[j];

for (j=i-1;j

str.data[s2.length+j]=s1.data[j];

str.length=s1.length+s2.length;

return str;

}

SqString DelStr(SqString s,int i,int j)

{ int k;

SqString str;

str.length=0;

if (i<=0 || i>s.length || i+j>s.length+1) //参数不正确时返回空串

return str;

for (k=0;k

str.data[k]=s.data[k];

for (k=i+j-1;k

str.data[k-j]=s.data[k];

str.length=s.length-j;

return str;

}

SqString RepStr(SqString s,int i,int j,SqString t)

{ int k;

SqString str;

str.length=0;

if (i<=0 || i>s.length || i+j-1>s.length) //参数不正确时返回空串

return str;

for (k=0;k

str.data[k]=s.data[k];

for (k=0;k

str.data[i+k-1]=t.data[k];

for (k=i+j-1;k

str.data[t.length+k-j]=s.data[k];

str.length=s.length-j+t.length;

return str;

}

void DispStr(SqString s)

{ int i;

if (s.length>0)

{ for (i=0;i

printf("%c",s.data[i]);

printf("\n");

}

}

二、对问题(1)的解决:

在头文件中添加一个函数声明:void Trans(SqString &s, char c1, char c2);

并在源文件中定义这个函数:

void Trans(SqString &s, char c1, char c2)

{

int i;

for (i=0; i

if (s.data[i]==c1)

s.data[i]=c2;

}

编辑main.cpp文件,实现功能:

#include

#include "sqString.h"

int main()

{

SqString s;

StrAssign(s, "messages");

Trans(s, 'e', 'a');

DispStr(s);

return 0;

}

三、对问题(2)的解决:

在头文件中加入加入新的函数声明:void Invert(SqString &s);

在源文件中定义这个函数:

void Invert(SqString &s)

{

int i;

char temp;

for (i=0; i

{

temp = s.data[i];

s.data[i]=s.data[s.length-i-1];

s.data[s.length-i-1] = temp;

}

}

编辑main函数:

int main()

{

SqString s;

StrAssign(s, "abcdefg");

Invert(s);

DispStr(s);

return 0;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431463.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify uniq

angularjs 使用ng-repeat报错 <div ng-init"words [高校,高校,高校]" ng-repeat"word in words">{{word}} </div> [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use track by expression to specify unique keys 发现是因为相…

java 并列排名,178. 分数排名

题目描述编写一个 SQL 查询来实现分数排名。如果两个分数相同&#xff0c;则两个分数排名(Rank)相同。请注意&#xff0c;平分后的下一个名次应该是下一个连续的整数值。换句话说&#xff0c;名次之间不应该有“间隔”。-----------| Id | Score |-----------| 1 | 3.50 || 2 |…

编写高质量代码改善C#程序的157个建议——建议130:以复数命名枚举类型,以单数命名枚举元素...

建议130&#xff1a;以复数命名枚举类型&#xff0c;以单数命名枚举元素 枚举类型应该具有负数形式&#xff0c;它表达的是将一组相关元素组合起来的语义。比如&#xff1a; enum Week{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday} 在这里&#xff0c;Week对于星…

python 定义变量_第三章(第2节):变量和常量

变量的概念基本上和初中代数的方程变量是一致的&#xff0c;只是在计算机程序中&#xff0c;变量不仅可以是数字&#xff0c;还可以是任意数据类型&#xff0c;比如我们上节课刚刚学过的基本数据类型或者我们后面要学的自定义数据类型。所谓常量就是不能改变的变量&#xff0c;…

OpenStack Weekly Rank 2015.08.24

Module  Reviews  Drafted Blueprints  Completed Blueprints  Filed Bugs  Resolved Bugs Cinder  5      1          1            6       13 Swift   10     N/A         N/A           8   …

php如何判断是否新数据类型,php中如何判断变量的数据类型呢?

摘要:下文讲述PHP中判断变量数据类型的方法分享&#xff0c;如下所示&#xff1b;实现思路:方式1&#xff1a;使用gettype函数返回变量的数据类型gettype函数可返回"boolean”、“integer”、“double”(float类型会返回“double”&#xff0c;而非“float”)、“string”…

pytorch卷积神经网络_资源|卷积神经网络迁移学习pytorch实战推荐

点击上方“AI遇见机器学习”&#xff0c;选择“星标”公众号重磅干货&#xff0c;第一时间送达一、资源简介这次给大家推荐一篇关于卷积神经网络迁移学习的实战资料&#xff0c;卷积神经网络迁移学习简单的讲就是将一个在数据集上训练好的卷积神经网络模型通过简单的调整快速移…

php 删除服务器上的文件,php如何删除服务器文件

在php中可以使用“ftp_delete”函数删除服务器文件&#xff0c;其语法是“ftp_delete(ftp_connection,file)”&#xff0c;参数“ftp_connection”表示要使用的FTP连接&#xff0c;参数“file”表示要删除的文件的路径。推荐&#xff1a;《PHP视频教程》PHP ftp_delete() 函数定…

企业生产环境下不同业务的linux分区建议

常规分区方案&#xff1a; /boot: 100M swap:内存的1至1.5倍 / : 剩余硬盘大小 DB及存储&#xff1a;有大量重要的数据 /boot : 100M swap: 内存的1至1.5倍&#xff0c;如果内存大于等于16G&#xff0c;分为8G至16G / &#xff1a;50-200G /data&#xff1a; 硬盘剩余所有大小…

python爬虫ip限制_简单爬虫,突破IP访问限制和复杂验证码,小总结

简单爬虫&#xff0c;突破复杂验证码和IP访问限制好吧&#xff0c;看题目就知道我是要写一个爬虫&#xff0c;这个爬虫的目标网站有一些反爬取意识&#xff0c;所以就有了本文了。我先说说场景吧&#xff1a;由于工作需要&#xff0c;平时有一大堆数据需要在网上查询&#xff0…

php使用双引号,PHP编程双引号怎么使用

PHP编程双引号怎么使用PHP用单引号代替双引号来包含字符串&#xff0c;这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量&#xff0c;单引号则 不会&#xff0c;注意&#xff1a;只有echo能这么做&#xff0c;它是一种可以把多个字符串当作参数的“函数”(译注&…

IOS UITextView自适应高度

LOFTER app需要实现了一个类似iPhone短信输入框的功能&#xff0c;它的功能其实蛮简单&#xff0c;就是&#xff1a;【UITextView的高度随着内容高度的变化而变化】。实现思路应该是&#xff1a; 在UITextView的textChanged事件响应代码里计算输入内容的高度&#xff0c;然后如…

python获取mac窗口程序内容_在Mac OS X中获取当前活动窗口/文档的标题

在Objective-C&#xff0c;简单的答案&#xff0c;用少量可可和大多Carbon Accessibility API是&#xff1a;// Get the process ID of the frontmost application.NSRunningApplication* app [[NSWorkspace sharedWorkspace]frontmostApplication];pid_t pid [app processId…

php实战搭建博客,yii2项目实战-博客管理平台的搭建

作者&#xff1a;白狼 出处&#xff1a;http://www.manks.top/document/yii2-blog-manage.html 本文版权归作者&#xff0c;欢迎转载&#xff0c;但未经作者同意必须保留此段声明&#xff0c;且在文章页面明显位置给出原文连接&#xff0c;否则保留追究法律责任的权利。相信看了…

ACM学习历程—HDU2068 RPG的错排(组合数学)

Description 今年暑假杭电ACM集训队第一次组成女生队,其中有一队叫RPG,但做为集训队成员之一的野骆驼竟然不知道RPG三个人具体是谁谁。RPG给他机会让他猜猜&#xff0c;第一次猜&#xff1a;R是公主&#xff0c;P是草儿&#xff0c;G是月野兔&#xff1b;第二次猜&#xff1a;R…

python训练手势分类器_机器学习零基础?手把手教你用TensorFlow搭建图像分类器|干货...

编者按&#xff1a;Pete Warden是TensorFlow移动团队的技术负责人。曾在Jetpac担任首次技术官。Jetpac的深度学习技术经过优化&#xff0c;可在移动和嵌入式设备上运行。该公司已于2014年被谷歌收购。Pete还曾在苹果公司从事GPU优化领域的图像处理工作&#xff0c;并为OReilly撰…

汉军Hundre考勤数据库数据表分析总结

ar-ATT为考勤刷卡数据库 Att-carRecord为刷卡流水&#xff0c;但是插入时需要根据workrecord表中数据进行判断 ATT-workrecord为运算后明细表存放位置&#xff0c;每次运算后重新生成。 刷卡数据更改方法&#xff1a; 查询序列&#xff1a;SELECT * FROM [AR_att].[dbo].[ATT_…

python内存消耗大吗_如何减少python内存的消耗?

标签&#xff1a;Python 打算删除大量涉及像C和C语言那样的复杂内存管理。当对象离开范围&#xff0c;就会被自动垃圾收集器回收。然而&#xff0c;对于由Python 开发的大型且长期运行的系统来说&#xff0c;内存管理是不容小觑的事情。在这篇博客中&#xff0c;我将会分享关于…

php invalid access,PHP出错消息PHP has encountered an Access Violation at XXXXXXXX 如何解决?...

1、是否zend所需的dll文件所在目录给的权限不够&#xff0c;必须有读取和运行的权限2、如果使用的是windows系统&#xff0c;是否设置过应用池&#xff0c;比如池https://anlijun.co中限制了什么

java class load 类加载

1:what is it jvm把描述类的数据从class字节码文件加载到内存&#xff0c;并对数据进行校验、解析、初始化&#xff0c;最终成为jvm直接使用的数据类型 1、ClassNotFoundExcetpion   我们在开发中&#xff0c;经常可以遇见java.lang.ClassNotFoundExcetpion这个异常&#xf…