顺序表的基本操作(C语言实现)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;ilength;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;ilength;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--)

相关文档
最新文档