白砂糖 发表于 2020-11-1 22:00:32

数据结构线性表的问题

1.建立一个顺序表,随机产生10个100以内的整数,并按要求完成:
(1)编写显示函数,在屏幕上显示顺序表中的10个整数:
(2)编写查找函数,从键盘输入任一整数在顺序表中查找,若找到,这回该元素在顺序表中的位置,否则提示无此元素;
(3)编写插入函数,从键盘输入待插入元素及插入位置,将完成插入后的顺序表输出;
(4)编写剩除函数,从键盘输入待删除元素位置,将该位置元素删除后的顺序表输出。


为什么用Visual Studio 2019 运行出来有很多bug,该怎么修改?





#include<iostream>
using namespace std;

const int Maxsize = 100;
template <typename int>
class SeqList
{
public:
        SeqList();
        SeqList(int a[], int n);
        ~SeqList();
        int Length();
        int Locate(int x);
        void Insert(int i, int x);
        int Delete(int i);
        void PrintList();
private:
        int data;
        int length;
};
template<typename int>
SeqList<int>::SeqList(int a[], int n)
{
        if (n > Maxsize)throw"参数非法";
        for (int i = 0; i < n; i++)
                data = a;
        length = 10;
}
template<typename int>
void SeqList<int>::PrintList();
{
        for (int i = 0; i < length; i++)
                cout << data << "\t";
        cout << endl;
}
template<typename int>
int SeqList<int>::Locate(int x)
{
        for (int i = 0; i < length; i++)
                if (data == x) return i + 1;
        return 0;
}
template<typename int>
void SeqList<int>::Insert(int i, int x)
{
        if (length == Maxsize)throw"上溢";
                if (i < 1 || i > length + 1)throw"插入位置错误";
        for (int j = length; j >= i; j--)
                data = data;
        data = x;
        length++;
}
template<typename int>
int SeqList<int>::Delete(int i)
{
        int x;
        if (length == 0)throw"下溢";
        if(i<1 || i>length)throw"删除位置错误";
        for (int j = i; j < length; j++)
                data = data;
        length--;
        return x;
}
int main()

{
        int a = { 5,19,45,47,50,60,65,67,78,80 }, x, i;
        int length = 10;
        SeqList<int>L{ a,5 };
        cout << "显示当前线性表的数据为:";
        a.PrintList();
        cout << "请输入待查找的元素值:";
        cin >> x;
        i = a.Locate(int x);
        if (0 == i)throw"无此元素";
        else cout << "元素" << x << "的位置为:" << i << endl;
        try
        {
                a.Insert(2, 8);
                cout << "执行插入操作后数据为:";
                a.PrintList();

        }
        catch (char *str) { cout << str << endl; };
        try
        {
                cout << "请输入要删除第几个元素:";
                cin >> i;
                x=a.Delete(int 4);

                cout << "删除的元素是"<<x<<",删除后数据为:";

                a.PrintList();

        }
        catch (char *str) { cout << str << endl; };
        return 0;

乐乐学编程 发表于 2020-11-1 23:47:26

要个币币

心驰神往 发表于 2020-11-2 08:02:41

百度一下吧

小摩的滴滴滴 发表于 2020-11-2 12:25:29

币币{:10_266:}

一抹心尘 发表于 2020-11-2 17:07:11

这是C吧,我不会,帮你顶一顶,等大佬过来。

网易瓶 发表于 2020-11-2 17:42:02

{:10_266:}

xieglt 发表于 2020-11-2 19:37:20

本帖最后由 xieglt 于 2020-11-2 19:39 编辑

首先,语法错误比较多。还有一些字符打成了中文全角字符。
模板类的定义为

template <typename T>         //这里不是int 而是代称 T ,当然也可以是别的非c++关键字,如果指定类型就没必要用模板类,
class SeqList
{
public:

private:
   Tdata ;
   int length;
}

模板类的使用

struct complex
{
       double x;
       double y;
}

SeqList<int> a;         //定义一个int 对象
SeqList<double> b;    //定义一个double 对象
SeqList<complex> c;//定义一个complex 对象
。。。


修改代码如下,只修改了语法,没有该代码逻辑。代码逻辑应该也有错误,自己仔细看看吧

#include<iostream>
using namespace std;

const int Maxsize = 100;

template <typename T>
class SeqList
{
public:
      SeqList();
      SeqList(T a[], int n);
      ~SeqList(){};
      int Length();
      int Locate(T x);
      void Insert(int i, T x);
      int Delete(int i);
      void PrintList();
private:
      T data;
      int length;
};

template<typename T>
SeqList<T>::SeqList<T>(T a[], int n)
{
      if (n > Maxsize)throw "参数非法";
      for (int i = 0; i < n; i++)
                data = a;
      length = 10;
}

template<typename T>
void SeqList<T>::PrintList()
{
      for (int i = 0; i < length; i++)
                cout << data << "\t";
      cout << endl;
}
template<typename T>
int SeqList<T>::Locate(T x)
{
      for (int i = 0; i < length; i++)
                if (data == x) return i + 1;
      return 0;
}
template<typename T>
void SeqList<T>::Insert(int i, T x)
{
      if (length == Maxsize) throw "上溢";
                if (i < 1 || i > length + 1) throw "插入位置错误";
      for (int j = length; j >= i; j--)
                data = data;
      data = x;
      length++;
}
template<typename T>
int SeqList<T>::Delete(int i)
{
      T x = 0;
      if (length == 0)throw "下溢";
      if(i<1 || i>length) throw "删除位置错误";
      for (int j = i; j < length; j++)
                data = data;
      length--;
      return x;
}
int main()

{
      int a = { 5,19,45,47,50,60,65,67,78,80 }, x, i;
      int length = 10;
      SeqList<int>L(a,5);
      cout << "显示当前线性表的数据为:";
      L.PrintList();
      cout << "请输入待查找的元素值:";
      cin >> x;
      i = L.Locate(x);
      if (0 == i) throw "无此元素" ;
      else cout << "元素" << x << "的位置为:" << i << endl;
      try
      {
                L.Insert(2, 8);
                cout << "执行插入操作后数据为:";
                L.PrintList();

      }
      catch (char *str) { cout << str << endl; };
      try
      {
                cout << "请输入要删除第几个元素:";
                cin >> i;
                x=L.Delete(4);

                cout << "删除的元素是"<<x<<",删除后数据为:";

                L.PrintList();

      }
      catch (char *str) { cout << str << endl; };
      return 0;
}

白砂糖 发表于 2020-11-2 22:20:26

谢谢

象棋爱好者 发表于 2020-11-3 19:56:29

领鱼币

1336069416 发表于 2020-11-4 10:25:33

原来如此

zx5111 发表于 2020-11-5 21:11:56

还能那币吗?
页: [1]
查看完整版本: 数据结构线性表的问题