(线性表)设顺序表A中的数据元素递增有序,试写一程序,将x插入到顺序表的适当位置上,使该表仍然有序。

(线性表)设顺序表A中的数据元素递增有序,试写一程序,将x插入到顺序表的适当位置上,使该表仍然有序。

 [算法的基本思想]

建立顺序表,在表中从后往前查找要插入的元素的位置,直到找到第一个比X小的数,并从表的最后一元素依次后移,把插入元素插入查找位置

源代码:

#include<stdio.h>

#define LIST_INIT_SIZE 100

typedef int ElemType;

typedef struct{

ElemType elem[LIST_INIT_SIZE];

int next;

}SqList;

void Initlist(SqList *L){

L->next=-1;

}

void ReadList(SqList *L,int n){

int i;

for(i=0;i<n;i++)

scanf("%d",&(L->elem[i]));

L->next=L->next+n;

}

int LenList(SqList *L){

int Len;

Len=L->next+1;

return Len;

}  

int PositionList(SqList *L,int X){

int j;

for(j=0;j<=L->next;j++)

if(X<L->elem[j])

return j+1;

return (L->next+1);

}

int InsList(SqList *L,int i,int e){

int k;

if((i<1)||(i>L->next+2)){

printf("The position is wrong!");

return(0);

}

if(L->next>=LIST_INIT_SIZE-1){

printf("The list is full!");

return(0);

}

for(k=L->next;k>=i-1;k--)

L->elem[k+1]=L->elem[k];

L->elem[i-1]=e;

L->next++;

return(1);

}

int WriteList(SqList *L){

int i;

for(i=0;i<=L->next;i++)

printf("%d,",L->elem[i]);

return(L->elem[i]);

}

int main(){

int s,c;

SqList L;

Initlist(&L);

printf("要输入多少个数:");

scanf("%d",&s);

printf("输入数字 :");

ReadList(&L,s);

LenList(&L);

printf("请输入要插入的数字:");

scanf("%d",&c);

printf("排列好的顺序:");

InsList(&L,PositionList(&L,c),c);

WriteList(&L);

printf("\n");

getchar();

}

结果执行如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值