【OJ01】顺序表-将顺序表中前 m 个元素和后 n 个元素进行互换(ADT+模板)

本文分享了如何使用模板类实现顺序表,通过Exchange函数实现前m个元素与后n个元素的互换,探讨了双层循环带来的O(m*n)复杂度问题,并提出了利用vector优化的方法。作者以实例展示了代码实现和反思,旨在初学者理解数据结构基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

高亮:仅作个人复盘学习过程之用,写得很烂,专业术语也不会靠瞎扯,还有很多讲给自己的废话。目前是想先打好基础再搞花里胡哨的方法。

问题描述 :

在这里插入图片描述

输入说明 :

在这里插入图片描述

输出说明 :

在这里插入图片描述

输入范例 :

0
13 5 27 9 32 123 76 98 54 87
5

输出范例 :

13,5,27,9,32,123,76,98,54,87

123,76,98,54,87,13,5,27,9,32

解题思路:

刚开始学数据结构所以用最原始的方法,手写一个ADT,不用vector(其实是因为不会用)。因为输入有不同类型,所以用到了模板。

算法方面,本来一开始想的是把前面(a1,a2,…,am)依次插入到表尾,但是这样会多开辟m个空间。而且实际去做的时候想用Insrt这个基本操作,但是调用起来那个下标很麻烦,还是在Exchange这个函数里一步步实现比较清楚。

此题把插入者反一下就只需要一个辅助变量了。(感谢老师上课提点,我实在是有点笨)

此题解法:

在这里插入图片描述
在这里插入图片描述

贴代码:

先是顺序表(够用就行.ver)

#include<iostream>
using namespace std;

const int MAXSIZE=100;
//异常处理 不用看 没用到
#define OVERFLOW -2
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0

template<class ElemType>
class SqList
{
   
public://设成private还要写接口,好麻烦,只为了ac不用强求
    ElemType *elem;//存储基地址
    int length;//当前长度
    int ListSize;//允许的最大存储容量 以sizeof(ElemType)为单位
public:
    //初始化
    SqList(int maxsize=MAXSIZE);
    //销毁
    ~SqList();//这里把删表写成析构函数了,如果初始
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值