#include<stdio.h>//设顺序表L是递增有序表,试写一算法,将x插入到L中并使L仍是递增有序表。
#include<stdlib.h>
#include<assert.h>
#define INIT_SIZE 100 //顺序表存储空间的初始分配量
typedef int Elemtype;
typedef struct
{
Elemtypeelem;//定义数组名为elem 线性表占用空间为100
int length;//当前长度
int Listsize;//当前分配的存储容量(以sizeof(ElemType)为单位)
}Sqlist;
void InitSqlist(SqlistL);
void CreateSqlist(SqListL);
void InsertSqList(SqListL,Elemtype e);
void PrintSqlist(SqList*L);
int main()
{
Elemtype e;
SqList L;
InitSqList(&L);
CreateSqlist(&L);
printf("请输入插入元素的数据:\n");
scanf("%d",&e);
InsertSqList(&L,e);
printf(",插入后顺序表:\n");
PrintSqlist(&L);
return 0;
}
//有序顺序表的初始化
void InitSqlist(SqlistL)
{
L->elem=(Elemtype)malloc(sizeof(Elemtype)*INIT_SIZE);
assert(L->elem!=NULL);
L->length=0;
L->Listsize=INIT_SIZE;
}
//有序顺序表的建立
void CreateSqlist(SqList*L)
{
int i,n;
printf("请输入顺序表表长:\n");
scanf("%d",&n);
fflush(stdin);
arrest(n<=L->Listsize);
L->length=n;
printf("输入要填入表中的数据:\n");
for(i=0;i<n;i++)
{
scanf("%d",&L->elem[i]);
}
}
//有序表的插入
void InsertSqList(SqList*L,Elemtype e)
{
int i;
assert(L->length < L->listsize);//创建的表长大于或等于初始分配量,则无法插入,停止程序
for(i=L->length;i>0&&L->elem[i-1]>e;i--)
L->elem[i]=L->elem[i-1];
L->elem[i]=e;
L->length++;
}
//顺序表显示函数
void PrintSqlist(SqList*L)
{
int i;
for(i=0;ilength;i++)
{
printf("%d",L->elem[i]);
}
}