选择排序 c语言(链表法)
目录
定义节点结构
选择排序思路
选择排序代码
VC 6.0 全代码+效果图
以升序为例
定义节点结构
typedef struct node{int data;struct node *next;
}Node,*LinkList;
选择排序思路
先假设 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 全代码+效果图
#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;
}
选择排序 c语言(链表法)相关推荐
- 重排链表-c语言链表法解决
重排链表-c语言链表法解决 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → - → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → L ...
- c语言选择排序_C语言——选择排序
1 选择排序(5分) 题目内容:编写选择排序,要求排序过程调用函数实现,在主函数输入n个数据,调用函数后,输出排好序的元素输入格式:输入整型数n,并输入n个整数,输入数据用空格隔开输出格式:输出排好序 ...
- 选择排序——C语言代码
介绍选择排序 下面是我在网上找的示例图,便于更好地理解选择排序 通过这个图我们明白K只是一个标记,它标记的是比较中 小的数.我们第一轮我们可以找到所有数中最小的数,然后让它和处于第一位的数进行位置交换 ...
- 选择排序C语言实现(源代码)
选择排序 对一个元素个数为20个的随机数组进行选择排序 #include <stdio.h> #include <stdlib.h> #include <time.h&g ...
- 简单选择排序——C语言实现
选择排序思想:若按照递增顺序对顺序表进行排列,在n个元素的顺序表中,从第i(i=1)个元素开始遍历到第n-1个元素,在遍历过程中都将第i个元素依次与第i+1到第n个元素进行比较,确定最小的元素,如果最 ...
- 简单选择排序(C语言)
数据结构总目录 简单选择排序 1. 图文解析 遍历序列,每次在当前位置向后扫描序列,记下最小值的位置,然后将最小值与当前位置的值交换 排序过程 序列:{ 5, 4, 3, 2, 1 } 从小到大排列 ...
- 数组 选择排序 c语言
解法一: #include <stdio.h> #define NUM 10 int main() {int a[NUM],i,j,k,t;printf("请输入%d个数&quo ...
- 输入法按照选字频率排序的C语言程序算法,算法与数据结构之选择排序(C语言)...
#include #include void SelectSort(int *a,int n);//预声明要调用的函数 int main(void) { int k; int x[]={,,,,,,, ...
- python单链表排序_单链表排序之选择排序
单链表排序是单链表的常见编程任务之一,也是面试中经常出现的题目.单链表排序的关键是交换算法,需要额外考虑.选择排序是比较直观的排序算法之一,这里就使用选择排序实现单链表的排序. C实现代码如下: Li ...
最新文章
- otsu阈值分割算法原理_大津二值化算法OTSU的理解
- VTK:定向圆柱体用法实战
- 服务器cpu,内存正常, 部分网站打不开,提示死锁,应用程序池回收就正常,如何解决?...
- 【解题报告】Leecode 500. 键盘行——Leecode每日一题系列
- Eclipse使用Maven插件创建Web项目时出错:Could not resolve archetype org.apache.maven.archetypes
- 移动优先的响应式布局
- 使用浏览器地址栏调用CXF Webservice的写法
- 别人在抢红包,程序员在研究红包算法
- Hyperledger fabric通道(Channel)的新建、管理、节点如何加入channel
- 百度文库免费复制文字_如何复制百度文库上的内容——解答!
- vue particles.js 登录背景实现粒子动效
- html中加入点击事件,html中的点击事件
- Reason: Canonical names should be kebab-case (‘-‘ separated), lowercase alpha-numeric characters and
- python pil_Python PIL composite()用法及代码示例
- 关于javascript中避免使用eval的理解
- Python小白的数学建模课-21.关键路径法
- Python List 包含关系判定
- apache2.2配置https协议(key文件、crt文件、csr文件生成方法)
- [软件工具][原创]pcl引用库一键配置到VisualStudio中支持vs2015-v2022使用教程
- php 课程设计总结心得体会,课程设计心得体会