设计在链式结构上实现简单选择排序算法

#include<stdio.h>
typedef struct link
{
	int data;
	struct link* next;
}Node;
//根据a[] 建立一个单链表
void create_list(Node*& list, int a[], int len, int index)
{
	if (index >= len)
		return;
	list = new Node;
	list->data = a[index];
	list->next = NULL;
	create_list(list->next, a, len, index + 1);
}
//先序打印出链表的值
void Print(Node* p)
{
	if (NULL == p)
		return;
	printf("%d ", p->data);
	Print(p->next);
}
Node* getmin(Node* node) {//从node开始 链表中的最小值
	Node* min;
	min = node;
	node = node->next;
	while (node)
	{
		if (min->data > node->data)
			min = node;
		node = node->next;
	}
	return min;//返回较小值节点
}
//交换值的方法 没有交换指针
void selectsort(Node*& list)//单链表的简单选择排序
{
	Node* p = list;//当前节点为list的第一个节点
	//遍历每个节点 然后从当前节点向后找到最小的元素 与当前节点交换
	while (p)
	{
		Node* min = getmin(p);//获得当前节点之后的值最小的节点
		int temp = min->data;
		min->data = p->data;
		p->data = temp;
		//遍历下一个结点
		p = p->next;
	}
}
int main()
{
	int p[7] = { 5,3,8,4,1,2,0 };
	Node* list;
	create_list(list, p, 7, 0);
	printf("原单链表:");
	Print(list);
	printf("\n");
	selectsort(list);
	printf("选择排序后的单链表:");
	Print(list);
	printf("\n");
	return 0;
}

 

现在还不知道为什么要 list = new Node; 以后问问大佬。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值