运行结果:
代码:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
#define OVERFLOW -1
#define OK 1
typedef int KeyType;
typedef int InfoType;
typedef struct {
KeyType key;
InfoType otherinfo;
}ElemType;
typedef struct {
ElemType *R;
int length;
}SqList;
int InitList_Sq(SqList &L)
{
L.R=new ElemType[MAXSIZE];
if(!L.R)
exit(OVERFLOW);
L.length=0;
return OK;
}
void InsertSort(SqList &L)
{
int key,i,j,k;
printf("请输入要插入的数值(以0结束):");
while(1)
{
scanf("%d",&k);
if(k != 0)
{
L.length = L.length +1;
L.R [L.length ].key = k;
for(i = 2; i <=L.length ; i++)
if(L.R [i].key < L.R [i-1].key )
{
L.R [0] = L.R [i];
L.R [i] = L.R [i-1];
for(j = i-2; L.R [0].key < L.R [j].key ; j-- )
L.R [j+1] = L.R [j];
L.R [j+1] =L.R [0];
}
}
else
break;
}
}
int main( )
{ int key,i,n,a;
SqList L;
InitList_Sq(L);
printf("输入值的个数:");
scanf("%d",&n);
printf("要输入的值:");
for(i = 1;i <=n; i++)
{
scanf("%d",&a);
L.R [i].key = a;
L.length ++;
}
InsertSort(L);
for (i = 1; i <= L.length ;i++)
printf("%6d",L.R [i].key );
printf("\n");
return 0;
}