#define MAXSIZE 100
#define OK 1
#define OVERFLOW -2
#include <iostream>
using namespace std;
typedef int elemtype;
typedef struct
{
elemtype vec[MAXSIZE];
int last;
} sequenlist;
void order_insert(sequenlist *L,int x)
{
L->last++; //空间+1
for(int i=L->last-1; i>0; i--) //从第last-1个元素开始向前遍历
{
if(x<L->vec[i]) //如果x比第i个元素小,就将每一个元素向后移1位
{
L->vec[i+1]=L->vec[i];
L->vec[i] = x; // 传参过程中,x的值不会改变,可重复使用
}
else //如果x>=第i个元素,就将x赋值给第i+1个元素
{
L->vec[i+1]=x;
break;
}
}
}
/*输出线性表*/
void listprint(sequenlist *L)
{
int i;
for(i=0; i<(*L).last; i++)
cout<<L->vec[i]<<" ";
cout<<endl;
}
int main()
{
sequenlist sl;
cout<<"输入顺序表长度:";
cin>>sl.last;
cout<<"输入顺序表:";
for(int i=0;i<sl.last;i++)
cin>>sl.vec[i];
int x;
cout<<"输入要插入的元素:";
cin>>x;
order_insert(&sl,x);
listprint(&sl);
return 0;
}
有序顺序表中插入一个元素,使其仍然有序
最新推荐文章于 2023-11-04 19:52:25 发布