1、已知带表头的节点单链表L,设计算法实现:以表中的第一个元素作为标准,将表中的所有值小于第一个元素的节点放在第一个节点之前,所有值大于第一个元素的节点均放在第一个元素节点之后;
#include<stdio.h>
#include"InstanceLinkList.c"
int main(){
void ReverseList(LinkList L);
void changelist(LinkList L);
LinkList L = creatLinkList();
insert(L,'5',1);
insert(L,'2',2);
insert(L,'3',3);
insert(L,'6',4);
insert(L,'8',5);
changelist(L);
dispaly(L);
}
void changelist(LinkList L){
if (L->next == NULL){
printf("该表为空!\n");
exit(0);
}
Node *p1,*p,*pre,*q;
p1 = L->next;
pre = p1;
p = p1->next;
while(p != NULL){
q = p->next;
if (p->data <= p1->data){
p->next = L->next;
L->next = p;
pre->next = q;
p = q;
}else{
pre = p;
p = q;
}
}
}