有关使用链表排序(选择排序,气泡排序)的C语言

电脑杂谈  发布时间:2020-07-19 15:12:06  来源:网络整理

c语言单链表排序_链表c语言_c语言链表

冒泡的链表

c语言链表_c语言单链表排序_链表c语言

比较两个相邻元素的大小,每遍将向后放置较大(或较小)的数字. 链表气泡排序思路: 设置两个指针c语言单链表排序,一个是当前指针,另一个是尾指针,当前指针指向头节点,并且尾指针分配为null. 当当前指针不等于尾指针时,它是一个循环,第一次将当前节点的值与下一个节点的值进行比较c语言单链表排序,直到下一个节点与尾指针相等(即为空) ),循环结束,最后将当前指针分配给尾指针,当前指针再次指向头节点,然后将两者进行比较,将最大(或最小)数放在末尾

链表c语言_c语言单链表排序_c语言链表

//冒泡排序的主要思想两两相性比较,每比较一次会把一轮最大或最小的数放在最后 
void BubbleSort(struct student *head){
	struct student *cur,*tail;
	cur=head;
	tail=NULL; 
	if(cur==NULL||cur->next==NULL){
		return;
	}
	while(cur!=tail){
		while(cur->next!=tail){
			if(cur->score>cur->next->score){
				int temp=cur->score;
				cur->score=cur->next->score;
				cur->next->score=temp;
				long temp1=cur->num;
				cur->num=cur->next->num;
				cur->next->num=temp1;
			}
			cur=cur->next;
		}
		tail=cur;
		cur=head;
	}
	
}

c语言单链表排序_c语言链表_链表c语言

选择顺序:

链表c语言_c语言单链表排序_c语言链表

选择和排序的想法是将当前元素与以下元素进行比较,并在每次循环时将最大或最小元素分配给当前元素.

//选择排序
void SelectedSort(struct student *head){
	struct student *cur,*p=NULL,*q=NULL;
	cur=head;
	int score=0,cscore=0;
	if(cur==NULL||cur->next==NULL){
		return;
	}
	while(cur!=NULL){
		p=cur->next; 
		q=cur->next;
		score=cur->score;
		cscore=score;
		while(p!=NULL){
			if(cscore>p->score){
				cscore=p->score;
				q=p;
			}
			p=p->next;
		}
		if(score!=cscore){
			q->score=score;
			cur->score=cscore;
			long temp=cur->num;
			cur->num=q->num;
			q->num=temp;
		}
		cur=cur->next;	
	}
} 

链接列表排序的源代码(可测试):


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-286017-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 本阿弗莱克
        本阿弗莱克

        以前工资十来元到几十几百元

      • 霍总
        霍总

        美国连家庭住宅都不可侵犯

      热点图片
      拼命载入中...