选择排序 c语言(链表法)「建议收藏」

选择排序 c语言(链表法)「建议收藏」选择排序代码链表实现c语言版–vc6.0

大家好,又见面了,我是你们的朋友全栈君。

目录

 定义节点结构

选择排序思路 

选择排序代码

VC 6.0 全代码+效果图


以升序为例 

 定义节点结构

typedef struct node{

	int data;
	struct node *next;
}Node,*LinkList;

选择排序思路 

选择排序 c语言(链表法)「建议收藏」

先假设 p2最小,pmin指向p2,然后p2 向后移动,依次比较p2->data 与pmin->data 的大小,用pmin指向最小的节点,p2走到最后节点 后,pmin与p1作比较满足条件  进行data域值的交换。具体过程见下面代码。 

选择排序代码

int selecrSort(LinkList phead){
	LinkList p1=phead->next;//存在头节点,p1指向第一个
	LinkList p2=NULL;//
	int temp;//定义临时变量为后面做交换时使用
	LinkList pmin=NULL;//定义最小值指针
	
	while(p1->next!=NULL){
		p2=p1->next;//从最小
		pmin=p2;//
		while(p2!=NULL){// 这个循环,p2指针向后找最小的data 并用pmin指向这个最小值的节点
			if(p2->data<=pmin->data)
			{
				pmin=p2;
			}
			p2=p2->next;
			
		}
		if( p1->data >= pmin->data){//比较最小值节与前p1的大小
		temp=p1->data;

		p1->data=pmin->data;
		pmin->data=temp;

		}
		p1=p1->next;
	}
	

	return 0;

}

VC 6.0 全代码+效果图

选择排序 c语言(链表法)「建议收藏」

 选择排序 c语言(链表法)「建议收藏」

#include <stdio.h>
#include <stdlib.h>
typedef struct node{

	int data;
	struct node *next;
}Node,*LinkList;
int  initHead(LinkList *phead);//创建头节点
int createLink(LinkList *phead);//创建链表
int output(LinkList phead);//
int selecrSort(LinkList phead);

int main()
{
	LinkList head;
	initHead(&head);
	printf("input numbers(0结束):\n");
	createLink(&head);
	
	selecrSort(head);
	
	output(head);
	


	return 0;
}

int selecrSort(LinkList phead){
	LinkList p1=phead->next;//存在头节点,p1指向第一个
	LinkList p2=NULL;//
	int temp;//定义临时变量为后面做交换时使用
	LinkList pmin=NULL;//定义最小值指针
	
	while(p1->next!=NULL){
		p2=p1->next;//从最小
		pmin=p2;//
		while(p2!=NULL){// 这个循环,p2指针向后找最小的data 并用pmin指向这个最小值的节点
			if(p2->data<=pmin->data)
			{
				pmin=p2;
			}
			p2=p2->next;
			
		}
		if( p1->data >= pmin->data){//比较最小值节与前p1的大小
		temp=p1->data;

		p1->data=pmin->data;
		pmin->data=temp;

		}
		p1=p1->next;
	}
	

	return 0;

}

int  initHead(LinkList *phead){
	LinkList p=NULL;
	p=(LinkList)malloc(sizeof(Node));
	p->next=NULL;
	*phead=p;
	return 0;
}
int createLink(LinkList *phead){

	int a;
	LinkList p=NULL;
	LinkList pre=*phead;
	
	while(1){
		
		scanf("%d",&a);
		if(a==0){
			return 0;
		}
		p=(LinkList)malloc(sizeof(Node));
		p->next=NULL;
		p->data=a;

		pre->next=p;
		pre=pre->next;

	}
	return 0;

}
int output(LinkList phead){

	LinkList p=phead->next;
	while(p!=NULL){
	
		printf("%d ",p->data);
		p=p->next;
	}
	return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153015.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 服务器矿机系统,云服务器矿机系统选择_云服务器系统哪个好

    服务器矿机系统,云服务器矿机系统选择_云服务器系统哪个好云服务器矿机内容精选换一换公有云平台支持弹性云服务器在专属主机与公共资源池之间迁移,具体包括:将创建在专属主机上的弹性云服务器迁移至其他专属主机。将创建在专属主机上的弹性云服务器迁移至公共资源池,即不再部署在专属主机上。将公共资源池的弹性云服务器迁移至专属主机上,成为专属主机上创建的弹性云服务器。关机状态的弹性云服务器才能执行迁移操作。云备份或云服务器备份不受冷迁用户可以在管理控制台对专属主机上…

    2022年9月30日
    0
  • linux中iostat命令_ios命令行怎么打开

    linux中iostat命令_ios命令行怎么打开简介iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。 语法iostat[-c][-d][-h][-N][-k|-m][-t][-V][-x][-

    2022年10月5日
    0
  • linux tomcat自动重启(linux关闭服务器命令)

    这里重启的条件是之前已经启动了tomcat服务器的情况下第一步:进入linux下tomcat目录,这里需要看你的tomcat配置在linux的哪个位置下,下面只是我个人的配置目录,不代表全部cd/usr/local/src/tomcat/bin第二步:查看当前启动的tomcat使用的进程,通过查看,我们发现tomcat占用了1630端口ps-ef|greptomc…

    2022年4月11日
    113
  • c++ stringstream(老好用了)

    c++ stringstream(老好用了)v前言:   以前没有接触过stringstream这个类的时候,常用的字符串和数字转换函数就是sscanf和sprintf函数。开始的时候就觉得这两个函数应经很叼了,但是毕竟是属于c的。c++中引入了流的概念,通过流来实现字符串和数字的转换方便多了。在这里,总结之前的,并介绍新学的。v常见格式串:    %%印出百分比符号,不转换。  %c整数转成对应的ASCII字元。  %d整数转

    2022年6月12日
    43
  • java restsharp_RestSharp 一个.NET(C#)的HTTP辅助类组件「建议收藏」

    java restsharp_RestSharp 一个.NET(C#)的HTTP辅助类组件「建议收藏」互联网上关于.NET(C#)的HTTP相关的辅助类还是比较多的,这里再为大家推荐一个.NET的HTTP辅助类,它叫RestSharp。RestSharp是一个轻量的,不依赖任何第三方的组件或者类库的Http的组件。RestSharp具有以下的优点:支持.NET3.5+,Silverlight4,WindowsPhone7,Mono,MonoTouch,MonoforAndroi…

    2022年9月8日
    1
  • 爬虫爬取妹子图片(入门篇)

    爬虫爬取妹子图片(入门篇)

    2021年11月11日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号