#include<stdio.h>
#include<stdlib.h>
#define NUM 20
//定义一个结构体,即顺序表
typedef struct{
int data[NUM];
int len;
}Sqlist;
//线性表的初始化 接受其返回值
Sqlist *create(){
Sqlist *L=(Sqlist *)malloc(sizeof(Sqlist));
L->len=0;
return L;
}
//往线性表中添加元素
void init(Sqlist *L){
int i;
scanf("%d",&L->len);
for(i=0;i<L->len;i++){//data[0]不赋值,用作哨兵
scanf("%d",&L->data[i]);
}
}
//插入排序
void InsertSort(Sqlist *L){
for(int i=2;i<=L->len;++i)//1,2先比较
if(L->data[i]<L->data[i-1]){//先比较是否需要插入
L->data[0]=L->data[i];//复制为哨兵
L->data[i]=L->data[i-1];
int j;//若不定义,则j只在for循环体中
for(j=i-2;L->data[0]<L->data[j];--j)
L->data[j+1]=L->data[j];
L->data[j+1]=L->data[0];
}
}
//打印出线性表,以检查对错
int display(Sqlist *L){
int i;
for(i=1;i<L->len;i++){
printf("%d\t",L->data[i]);
}
}
int main(){
Sqlist *L=create();
//验证初始化是否正确
init(L);
printf("初始顺序表为:");
display(L);
printf("\n");
InsertSort(L);
printf("直接插入排序结果为:");
display(L);
return 0;
}
02-22
5571
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
04-26
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交