链式存储结构上的直接插入排序算法
typedef struct LNode{
int data;
struct LNode *next;
}Llink;
void sortlist(Llink *head){
Llink *newhead,*s,*pre,*p; //定义变量
p=head->next; //p用来存放链L1的头结点地址
newhead=p->next; //newhead用来存放链L2的头结点地址
typedef struct LNode{
int data;
struct LNode *next;
}Llink;
void sortlist(Llink *head){
Llink *newhead,*s,*pre,*p; //定义变量
p=head->next; //p用来存放链L1的头结点地址
newhead=p->next; //newhead用来存放链L2的头结点地址
p->next-NULL; //断开原来的链L
while( newhead ){ //newhead存在说明原链L中的元素不少于两个,可进行下列操作
s=newhead;
newhead=newhead->next;
pre=head; //链L1的前驱
p=head->next; //链L2的后继
while( p!=NULL && p->data < s->data ){ // 新链内部的元素比较
pre=p;
p=p->next; //依次向后找合适的插入点
}
s->next=p;
pre->next=s; //找到插入点,即将s这个结点插入到链L1中的pre和p之间
}
} 抱歉,不太会发代码文字,有人能告诉我怎么删贴吗?{:5_96:}
页:
[1]