单向链表排序(冒泡)
2006-02-24 16:30
232 查看
struct student
{
int num;
struct student *next;
}
struct student *paixu(struct student *head)
{
struct student *p,*q;
int temp;
q=head;
while(q->next!=null)
{
p=head;
while(p->next!=null) //这个判断有冗余,待改进
{
if (p->num > p->next->num) //交换数值
{
temp=p->num;
p->num=p->next->num;
p->next->num=temp;
}
p=p->next;
}
q=q->next;
}
return *head;
}
2 void arrange(NODE *head) /* 按照单词出现频率排序函数 */
{
NODE *p1,*p2,*p3;
p1=head->next;
p2=NULL;
p3=head;
while(p2!=head->next->next) /* p2作为尾指针控制p1循环,采用下沉法排序,从head->next开始排序*/
{
while(p1->next!=p2)
{
if (p1->count<p1->next->count)
{ p3->next=p1->next;
p1->next=p1->next->next;
p3->next->next=p1;
}
p3=p1; /* P3为P1的前驱 */
p1=p1->next;
}
p2=p1; /* 尾指针上移一位 */
p1=head->next; /* P1,P3指向初始位置 */
p3=head;
}
{
int num;
struct student *next;
}
struct student *paixu(struct student *head)
{
struct student *p,*q;
int temp;
q=head;
while(q->next!=null)
{
p=head;
while(p->next!=null) //这个判断有冗余,待改进
{
if (p->num > p->next->num) //交换数值
{
temp=p->num;
p->num=p->next->num;
p->next->num=temp;
}
p=p->next;
}
q=q->next;
}
return *head;
}
2 void arrange(NODE *head) /* 按照单词出现频率排序函数 */
{
NODE *p1,*p2,*p3;
p1=head->next;
p2=NULL;
p3=head;
while(p2!=head->next->next) /* p2作为尾指针控制p1循环,采用下沉法排序,从head->next开始排序*/
{
while(p1->next!=p2)
{
if (p1->count<p1->next->count)
{ p3->next=p1->next;
p1->next=p1->next->next;
p3->next->next=p1;
}
p3=p1; /* P3为P1的前驱 */
p1=p1->next;
}
p2=p1; /* 尾指针上移一位 */
p1=head->next; /* P1,P3指向初始位置 */
p3=head;
}
相关文章推荐
- C语言实现单向链表及其各种排序(含快排,选择,插入,冒泡)
- C语言实现单向链表及其各种排序(含快排,选择,插入,冒泡)
- 数据结构之单向链表操作1-(插入,删除,交换,反转,排序等操作)
- 单向链表建立 排序
- 单向链表归并排序
- 链表排序之冒泡法---简易篇
- 链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)
- 单向链表的相关操作总结:创建、删除、查找、排序、统计链表大小、链表的反转和遍历等
- 链表基本排序(逆置、冒泡、选择、插入)
- 链表面试题-单链表排序(冒泡,快速,归并)
- 链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)
- 单向链表归并排序
- C语言下单向链表的排序
- 对一个存储学生信息的单向链表,按照学号升序对链表进行排序,每个节点包含了一个学生ID
- 连接两个单向链表,返回排序后的结果。
- java实现单向链表CRUD,反转,排序,查找倒数第k个元素,递归输出等操作
- 双向链表小练习-》拿单向链表改的,其中增加了一个链表排序的小应用
- 链表排序--冒泡法
- 不带头结点的单向链表排序——插入排序(C语言)
- 链表排序(冒泡、归并)