数据结构(一)
学习数据结构与算法过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流。
—— 字符串插入 ——
1.题目描述
有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3。(字符个数不包括字符串结尾处的’\0’。)将substr插入到str中ASCII码最大的那个字符后面,若有多个最大则只考虑第一个。
1.1输入
输入包括若干行,每一行为一组测试数据,格式为 str substr
1.2输出
对于每一组测试数据,输出插入之后的字符串。
1.3样例输入和输出
样例输入
abcab eee
12343 555
样例输出
abceeeab
12345553
2.代码实现
c++
#include <iostream>
using namespace std;
int main()
{
//a为第一段字符串,即str;b为第二段字符串,即substr。
string a, b;
//进入循环来判断a中ASCII码最大的字符,并进行插入操作。
while(cin >> a >> b)//最简单的输入办法,自动识别空格。
{
//n用来储存a字符串的长度。
int len = a.length();
//m用来储存a字符串中ASCII码最大的字符的位置。
int max_num = 0;
//循环寻找a字符串中最大ASCII码字符的位置。
for(int i = 0;i < len;i++)
if(a[i] > a[max_num])
max_num = i;
//循环输出a字符串最大ASCII码字符以及其之前的字符串。
for(int i = 0;i <= max_num;i++)
cout << a[i];
//输出b字符串。
cout << b;
//循环输出a字符串最大ASCII码字符之后的字符串。
for(int i = max_num + 1;i < len;i++)
cout << a[i];
}
return 0;
}
c
只需要把c++的输入输出改一下,输入部分对于初学者来说略微麻烦,可以多次调试。具体代码就不写出来了。
3.代码说明
具体的代码作用都在代码注释中,这段代码将本题的插入动作变为分段输出。本题的原题出现在数据结构的第一节——线性表。很多刚学数据结构或者C/C++课程的同学认为线性表就是顺序表或者链表,其实不是的,线性表仅仅是逻辑上的定义而已,即具有相同特性数据元素的有限序列,(如一个字符数组或者一个整型数组再或者链表 )并不是说,线性表就一定是链表或者顺序表(链表和顺序表都满足线性表的定义,只是实现方式不一样,顺序表采用顺序存储方式,内存中开辟的地址是连续的,而链表采用链式存储的方式,地址是可以不连续的)。