数据结构线性表1-3

本文探讨了在有序线性表中插入元素的算法,并分析了时间复杂度。同时,文章详细讨论了单链表的创建、输入输出问题,以及在链表中按值有序插入节点的常见错误和解决方案。还介绍了线性表元素逆置的算法,分别针对数组和链表两种存储结构,分析并修复了相关问题。
摘要由CSDN通过智能技术生成

1..设线性表存储在数组A[1..arrsize]的前elenum个分量中,且递增有序。试编写一个算法:在线性表中插入元素x,需保持线性表的有序性,并且分析算法的时间复杂度。

我以为很简单,抱歉,高估了自己的实力。

问题1:

宏名定义格式#define <宏名>  <字符串>(别用等号)不能自增自减

错误代码如下:

#include<iostream>
int MaxSize=10;
using namespace std;
template<class T>
struct Array_s{
    T data;
};
template<class T>
class Array1{
private:
    Array_s<T> *first;
    int num=0;//数组现有元素数
    bool flag_full=0;//判断开辟数组空间是否已满
public:

    Array1();
    ~Array1(){delete first;}
    bool insert(T x);
    void output();
};
template<class T>
Array1<T>::Array1(){
    first=new Array_s<T>[MaxSize];
    T x;
    cout<<"请输入要输入的元素数";
    int m=0;
    cin>>num;
    if(num>=MaxSize)
    {
        flag_full=1;
        num=MaxSize;//防止溢出
    }
    cout<<"请输入元素,回车区分";
    for(int i=0;i<num;i++)
    {
        cin>>x;
        first[i].data=x;
    }
}
template<class T>
bool Array1<T>::insert(T x){
    if(first==NULL)
        return false;
    num++;
    if(flag_full==1)//数组满,重新开辟空间
    {
        Array_s <T>*p=new Array_s<T>[++MaxSize];//出错,空间出错
        bool insert_ok=0;
        for(int i=0;i<num;i++)
        {
            if(((first[i].data<=x)&&(insert_ok==0))||(i==num))
            {
                p[i].data=x;
                insert_ok=1;
            }
            else if(insert_ok==1)
            {
                p[i+1].data=first[i-1].data;//订正:p[i].data,循环一次i已自增
            }
            else
            {   p[i].data=first[i].data;}
            
        }/*订正:在return true;语句上增加 delete []first;first=p;
            开辟了新空间不要忘记释放旧空间,改变指针指向!*/

        return true;
    }
    else//数组没满
    {
        for(int i=0;i<num;i++)//出错,订正ÿ
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值