链表插入排序

//链表插入
#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)    收藏  举报

导航