为了高效性,我选择了换节点的方式来实现链表的排序的核心部分。
这是具体的思路,非常抱歉,图是随便弄的。
ort(struct node *head)//链表排序,冒泡排序 { struct node *p, *q,*x,*temp=NULL,*prep,*tail,*subHead,*b,*v=NULL,*t;//定义指针 prep = head;//指针指向开头 b = head; p = prep; q = prep->next; for(int i=0;i<4;i++)//有几个数据就-1;比如x 个i<x-1 { while(q!=NULL) { if(p->name>q->name) { if (p ==b)//处理开头的问题 { p->next = q->next;//从后往前连接 q->next = p; head = q; prep = head; p = head; b= head; q = head->next; } else if (p != b)//处理中间过程 { p->next = q->next; q->next = p; head->next = q; head = head->next; p = head; q = head->next; } } p = p->next;//地址移动 q = q->next; } head = prep; p = prep; q = prep->next; } head = prep; return head; }如有更好的方法还请指教,谢谢。