#define MaxSize 100
#include<stdio.h>
typedef int DataType;
typedef struct {
DataType list[MaxSize];
int size;
}SeqList;
void ListInitiate(SeqList* L)//初始化顺序表L
{
L->size = 0;
} //定义初始元素个数
int ListLength(SeqList L) {//返回顺序表L的当前元素个数
return L.size;
}
int ListInsert(SeqList * L, int i, DataType x){
//在顺序表L的第i(O~size)个位置前插入x
//插入成功返回1,插入失败返回0
int j;
if (L->size >= MaxSize)
{
printf("顺序表已满无法插入!\n");
return 0;
}
else if (i <0 | i> L->size)
{
printf("参数i不合法!\n");
return 0;
}
else {//从后向前依次后移数据,为插入做准备
for(j = L->size; j > i; j--)L->list[j]=L->list[j - 1];
//插入x
L->list[i] = x; //元素个数加1
L->size++;
return 1;
}
}
int ListDelete(SeqList* L, int i, DataType* x){
//删除顺序表L中第i(0~size-1)个位置处的元素并保存到x中
//删除成功返回1,删除失败返回0
int j;
if (L->size <= 0) {
printf("顺序表已空无元素可删!\n");
return 0;
}
else if (i<0 || i > L->size - 1) {
printf("参数i不合法");
return 0;
}
else {
*x = L->list[i]; //保存删除的元素到x中
//从前向后依次前移
for (j = i + 1; j <= L->size - 1; j++) L->list[j - 1] = L->list[j]; L->size - 1;
return 1; //元素个数减1
}
}
void Insert_SqList(SeqList &va,int x)/*把x插入递增有序表va中*/
{ int i;
if(va.size> MaxSize) return;
for(i=va.size-1;va.list[i]>x&&i>=0;i--)
va.list[i+1]=va.list[i];
va.list[i+1]=x;
va.size++;
}/*Insert_SqList*/
int main(){
SeqList L;
int a,x;
scanf("%d",&x);
ListInitiate(&L);
while(x!=-1){
ListInsert(&L,0,x);
scanf("%d",&x);
}
scanf("%d",&a);
Insert_SqList(L,a);
for(int i=0;i<ListLength(L);i++){
printf("%d",L.list[i]);
}
return 0;
}
设顺序表va中的数据元素递增有序。试设计一个算法,将x插入到顺序表的适当位置上,以保持该表的有序性。
最新推荐文章于 2022-08-07 11:20:58 发布