#define OVERFLOW 0 #define List_size 100
#define Listincrement 10 #include<stdio.h>
#include<malloc.h>
typedef float ElemType; typedef struct
{ ElemType *elem;
int length;
int listsize;
}Sqlist;
void main()
{
Sqlist L;
Sqlist creat_Sq(Sqlist*L);
void print_Sq(Sqlist*L);
void ascend(Sqlist*L,int i);
void Insert(Sqlist*L,float e);
int i;
float e;
creat_Sq(&L);
printf("\n");
print_Sq(&L);
printf("\n");
ascend(&L,i);
print_Sq(&L);
printf("\n");
Insert(&L,e);
print_Sq(&L);
printf("\n");
}
Sqlist creat_Sq(Sqlist*L)//创建顺序表
{
ElemType *newbase;
int i,n;
L->elem=(ElemType*)malloc(List_size*sizeof(ElemType));
if(!L->elem) exit(OVERFLOW);//存储分配失败
printf("请输入元数个数:\n");
scanf("%d",&n);
if(n>=List_size)//如果所需空间大于线性表的初始空间,则增加空间容量
{
newbase=(ElemType*)malloc((List_size+Listincrement)*sizeof(E lemType));
L->elem=newbase;
L->length=n;
L->listsize=List_size+Listincrement;
for(i=0;i<L->length;i++)
{ printf("请输入第%d个数据:",i+1);
scanf("%f",&(L->elem[i]));
}
if(!newbase) exit(OVERFLOW);
}
else
{L->length=n;
L->listsize=List_size;
for(i=0;i<L->length;i++)
{printf("请输入第%d个数据:",i+1);
scanf("%f",&(L->elem[i]));}
}
}
void print_Sq(Sqlist*L)//输出顺序表{
int i;
printf("顺序表中存储的元素:");
for(i=0;i<(L->length);i++)
printf("<%0.2f>",L->elem[i]); }
void ascend(Sqlist*L,int i)
{
int j,m;
float n;
i=L->length;
for(j=0;j<i;j++)
for(m=j+1;m<i;m++)
if(L->elem[j]>L->elem[m])
{
n=L->elem[j];L->elem[j]=L->elem[m];L->elem[m]=n;
}
}
void Insert(Sqlist*L,float e)
{
ElemType *newbase;
int i;
ElemType*p;
ElemType*q;
printf("请输入要插入的元素:");
scanf("%f",&e);
if((L->length+1)>=List_size)//如果所需空间大于线性表的初始空间,则增加空间容量
{
newbase=(ElemType*)malloc((List_size+Listincrement)*sizeof(E lemType));
L->elem=newbase;
L->listsize=List_size+Listincrement;
}
if(e<=L->elem[0])
{ q=&(L->elem[0]);
++L->length;
for(p=&(L->elem[L->length]);p>=q;p--)
*(p+1)=*p;
*q=e;
}
else
{
if(e>L->elem[L->length-1])
{ L->elem[L->length]=e;
++L->length;
}
else
{ for(i=0;e>L->elem[i];++i)
q=&(L->elem[i]);
printf("%d",i);
++L->length;
for(p=&(L->elem[L->length-1]);p>=q;p--)
*(p+1)=*p;
*(q+1)=e;
}
}
}。