已知顺序表中元素值递增有序。用算法实现将元素x查到表中适当的位置上,以保持顺序表的有序性。
第一种写法:
//已知顺序表中元素值递增有序。用算法实现将元素x查到表中适当位置上,以保持顺序表的有序性
#include"stdio.h"
#define DATATYPE1 int
#define MAXSIZE 100
typedef struct
{
DATATYPE1 datas[MAXSIZE];
int last;
}SEQUENLIST;
void insert_x_seqlist(SEQUENLIST *a,int x)
{//在有序表中插入一个x,插入完仍有序
int i;
i=a->last;
while(x<a->datas[i])
{
a->datas[i+1]=a->datas[i];
i--;
}
a->datas[i+1]=x;
a->last++;
}
void print_seqlist(SEQUENLIST *a)
{//依次打印顺序表a中的所有元素
int i;
printf("表中各元素为:");
for(i=1;i<=a->last;i++)
{
printf("%5d",a->datas[i]);
}
printf("\n");
}
main()
{
SEQUENLIST a;
int n=5,i,x;
printf("构造含有%d元素有序表:",n);
printf("\n请输入一个整数:");
scanf("%d",&x);
a.datas[1]=x;
a.last=1;
i=2;
while(i<=n)
{
print_seqlist(&a);
printf("\n请输入一个整数:");
scanf("%d",&x);
insert_x_seqlist(&a,x);
i++;
}
printf("\n含有%d个元素的有序表:\n",n);
print_seqlist(&a);
}
第二种写法:
//2-2insert_sortSqlist-2.c
#include"stdio.h"
#define DATATYPE1 int
#define MAXSIZE 100
typedef struct
{
DATATYPE1 datas[MAXSIZE];
int last;
}SEQUENLIST;
void insert_x_seqlist(SEQUENLIST *a , int x)
{//在有序表中插入一个x,插入完仍有序
int i;
i=a->last;
while(x<a->datas[i])
{
a->datas[i+1]=a->datas[i];
i--;
}
a->datas[i+1]=x;
a->last++;
}
int create_sortedlist(SEQUENLIST *a,int n)
{
void print_seqlist(SEQUENLIST *a);
int x,i=1;
if(n>=1)
{
printf("请输入第%d个整数:",i);
scanf("%d",&x);
a->datas[1]=x;
a->last=1;
print_seqlist(a);
i=2;
while(i<=n)
{
printf("请输入第%d个整数:",i);
scanf("%d",&x);
insert_x_seqlist(a,x);
print_seqlist(a);
i++;
}
return 1;
}
else
return 0;
}
void print_seqlist(SEQUENLIST *a)
{//依次打印顺序表a中的所有元素
int i;
printf("表中各元素为:");
for(i=1;i<=a->last ;i++)
{
printf("%5d",a->datas[i]);
}
printf("\n");
}
main()
{
SEQUENLIST a;
int n=5;
printf("构造含有%d元素有序表:\n",n);
if(create_sortedlist(&a,n)==1)
{
printf("\n含有%d个元素有序表:\n",n);
print_seqlist(&a);
}
else
printf("构造失败\n");
}
关注下面这个关注号,了解更多信息。
头顶渐突终不悔,代码道出我的爱。