数据结构 线性表(一) 字符串插入

数据结构(一)

学习数据结构与算法过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流。

—— 字符串插入 ——

1.题目描述

有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3。(字符个数不包括字符串结尾处的’\0’。)将substr插入到str中ASCII码最大的那个字符后面,若有多个最大则只考虑第一个。

原题目北京大学MOOC—数据结构—线性表练习题2

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++课程的同学认为线性表就是顺序表或者链表,其实不是的,线性表仅仅是逻辑上的定义而已,即具有相同特性数据元素的有限序列,(如一个字符数组或者一个整型数组再或者链表 )并不是说,线性表就一定是链表或者顺序表(链表和顺序表都满足线性表的定义,只是实现方式不一样,顺序表采用顺序存储方式,内存中开辟的地址是连续的,而链表采用链式存储的方式,地址是可以不连续的)。

发布了24 篇原创文章 · 获赞 8 · 访问量 4845

猜你喜欢

转载自blog.csdn.net/qq_44867435/article/details/104226742