数据结构直接插入排序算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
姓名:余忠科学号:119074414
1.以单链表作为存储结构实现直接插入排序算法。
#include
#include
struct node
{
int num;
struct node *next;
};
struct node *head=NULL;
cre_list() //初始化结点
{
head = (struct node *)malloc(sizeof(struct node));
head->num=0;
head->next = NULL;
}
add_node(int num) //插入结点
{
struct node *ptr = (struct node *)malloc(sizeof(struct node));
ptr->num = num;
ptr->next = head->next;
head->next=ptr;
}
display_node() //遍历链表
{
struct node *p = head->next;
do
{
printf("%d\t",p->num);
p = p->next;
}while(p != NULL);
printf("\n");
}
select_insert()
{
int min=0;
int tmp=0;
struct node *p,*q,*M;
p=q=M=head;
while(p->next!=NULL)
{
M=q=p->next;
min=q->num;
while(q!=NULL)
{
if(q->num < min)
{
M=q;
min=q->num;
}
q=q->next;
}
if(p->next!=M)
{
tmp=p->next->num;
p->next->num=M->num;
M->num=tmp;
}
p=p->next;
}
}
int main()
{
int i;
int a[10]={23,41,77,12,98,25,6,97,55,38};
cre_list();
for(i=0;i<10;i++)
{
add_node(a[i]);
}
display_node();
select_insert();
display_node();
return 0;
}