description | 已知顺序表L递增有序,编写程序,将X插入到线性表的适当位置上,以保持线性表的有序性。 |
input | 第一行输入顺序表元素个数elenum;(0<elenum<1000) 第二行输入顺序表L; 第三行输入插入值X。 |
output | 输出插入X后的有序顺序表 |
sample_input | 7 2 3 4 5 6 7 8 1 |
sample_output | 1 2 3 4 5 6 7 8 |
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int *a;
int length;
int Size;
}SeqList,*PList;
PList SeqList_Init(PList base,int *s,int n)
{
int i;
//base=(PList)malloc(sizeof(SeqList));
base->a=(int *)malloc(sizeof(int)*1000);
base->Size=1000;
base->length=0;
for(i=0;i<n;i++){
base->a[i]=s[i];
base->length++;
}
return base;
}
void SeqList_Insert(PList base,int x)
{
int i,*q,*p;
SeqList list=*base;
for(i=0;i<base->length;i++){
if(base->a[i]<x)continue;
else break;
}
q=&(base->a[i]);
for(p=&(base->a[base->length-1]);p>=q;--p)
*(p+1)=*p;
*q=x;
base->length++;
}
void SeqList_Show(PList p)
{
int i;
for(i=0;i<(p->length);i++){
printf("%d ",p->a[i]);
}
printf("\n");
}
int main()
{
SeqList aaa;
PList p=&aaa;
int n,a[1000],x,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&x);
SeqList_Init(p,a,n);
SeqList_Insert(p,x);
SeqList_Show(p);
return 0;
}