链表插入排序
//链表插入
#include <stdio.h>
#include <stdlib.h>
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next;
}linknode, *plink;
void init_link(plink *pH)//初始化
{
*pH = (plink)malloc(sizeof(linknode));//申请空间
(*pH)->next = NULL;
}
void link_sort(plink pH)//排序
{
plink r;
plink q;
plink u;
plink p;
p = pH->next;
pH->next = NULL;
while(p != NULL)
{
r = pH;
q = pH->next;
while(q != NULL && q->data < p->data)
{
r = q;
q = q->next;
}
u = p->next;
p->next = q;
r->next = p;
p = u;
}
}
void show(plink pH)//打印
{
plink p = pH->next;
while(p != NULL)
{
printf("%d\t", p->data);
p = p->next;
}
printf("\n");
}
int main(void)
{
plink H;
int a;
plink p;
plink r;
init_link(&H);
r = H;
scanf("%d", &a);
while(a != -1)
{
p = (plink)malloc(sizeof(linknode));
p->data = a;
r->next = p;
r = p;
scanf("%d", &a);
}
r->next = NULL;
link_sort(H);
show(H);
return 0;
}
posted on 2013-07-29 23:48 To Do List 阅读(76) 评论(0) 收藏 举报
浙公网安备 33010602011771号