PTA递增有序顺序表的插入

 

实验目的:1、掌握线性表的基本知识 2、深入理解、掌握并灵活运用线性表。3、熟练掌握线性表的存储结构及主要运算的实现
已知顺序表L递增有序,将X插入到线性表的适当位置上,保证线性表有序。。

输入格式:

第1行输入顺序表长度,第2行输入递增有序的顺序表,第3行输入要插入的数据元素X。

输出格式:

对每一组输入,在一行中输出插入X后的递增的顺序表。

输入样例:

在这里给出一组输入。例如:

5
1 3 5 7 9
6

输出样例:

在这里给出相应的输出。例如:

1,3,5,6,7,9,

 

#include <iostream>           //引用输入输出流库函数的头文件
using namespace std;
const int MaxSize = 100; 
class SeqList
 {
public:
   SeqList(int a[ ], int n);       //有参构造函数,建立一个长度为n的顺序表
   int Locate(int x );           //按值查找,在线性表中查找值为x的元素序号
   void Insert(int i, int x);       //插入操作,在线性表中第i个位置插入值为x的元素
   void PrintList( );                     //遍历操作,按序号依次输出各元素
private:
   int data[MaxSize];           //存放数据元素的数组
   int length;                        //线性表的长度
};
SeqList :: SeqList(int a[ ], int n)
{
  if (n > MaxSize) throw "参数非法";
  for (int i = 0; i < n; i++)  
   data[i] = a[i];
      length = n;
}
int SeqList :: Locate(int x)
{  int m;
  for (int i = 0; i < length; i++)     // length=n=cnt=5
    {
     
     if (data[i] >= x) //x=6
        {
		m=i+1;
        break;
		}
        else m=length+1;
 }   return m;  //返回其位置 
}
void SeqList :: Insert(int i, int x)//在第i的位置插入x 
{
    if (i < 1 || i > length + 1) throw "位置";
for (int j = length; j >= i; j--)
     data[j] = data[j - 1];             //注意第j-1个元素存在数组下标为j处
     data[i - 1] = x;
     length++;
}
void SeqList :: PrintList( )
{
  for (int i = 0; i < length; i++)
 cout << data[i] << ',';                   //依次输出线性表的元素值
 }

int main( )
{
int cnt,insertnum;//定义数组长度cnt=5,插入的数值 insertnum=6,m用来保存返回位置 
cin >> cnt;     
int r[MaxSize] , i;//定义i保存要返回的元素位置 
for (int i = 0; i < cnt; i++)
{
    cin >> r[i];
}//给数组赋初值
SeqList L(r, cnt); //建立具有5个元素的顺序表
cin >> insertnum;
i = L.Locate(insertnum);//接下去寻找6的位置返回其下标;也就是查找返回位置存在i里 
L.Insert(i, insertnum); //在第i个位置插入值为6的元素
L.PrintList( ); //输出插入后的线性表
cout << endl;
return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值