顺序表的基本操作(C语言实现)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#define OVERFLOW 0 #define List_size 100
#define Listincrement 10 #include
#include
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
{ 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
{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
for(m=j+1;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--)