仅供自己学习记录尔
void reverse(Node *head)
{/*
实现链表的就地逆置,即利用原表存储空间将线性表(a1,a2,…,an)逆置为(an, an-1,…,a1)。
*/
Node *p = head->next;
Node *q;
while(p->next != NULL){
q = p->next;
p->next = q->next;
q->next = head->next;
head->next = q;
}
}
void sort(Node *head)
{
/*已知一个带头结点的单链表L,设计算法实现:以表中第一个元素作为标准,
将单链表中所有值小于第一个元素的结点均放在第一个元素结点之前,所有值大于
第一个元素的结点均放在第一个元素结点之后。
*/
int num = 0,i = 0;
Node *p;
p = head->next;
Node *q,*tail,*h;
while(p !=NULL){
num++;
tail = p;
p = p->next;
}
p = head->next;
//printf("%d\n",p->a);
while(i<num){
q = p->next;
//printf("%d\n",p->a);
if(q->a < p->a){
p->next = q->next;
q->next = head->next;
head->next = q;
}else{
p->next = q->next;
q->next = tail->next;
tail->next = q;
tail = q;
}
//print(head);
i++;
}
}