当前位置: 首页 > article >正文

有一个带头结点的单链表L,设计一个算法使其元素递增有序

有一个带头结点的单链表L,设计一个算法使其元素递增有序

代码思路:
我这里懒得搞那个指针了,直接遍历一遍链表,把链表的元素复制到数组arr里面
对数组A进行一下排序,排完之后再把元素复制到L里面。

至于排序你用啥算法都行,我这里用插入排序,你也可以用别的。

void linkSort(LinkList* L) {
	int arr[10] = { 0 };//这里默认L的最大长度不超过10
	int i = 0;
	int j = 0;
	LNode* p = (*L)->next;//用p来遍历链表
	for (i = 0;i < 10;i++) {//把链表元素赋给arr
		arr[i] = p->data;
		p = p->next;
	}


	//插入排序-升序
	for (i = 1;i < 10;i++) {//插入排序-升序
		int tmp = arr[i];
		for (j = i;j >= 0;j--) {
			if (tmp < arr[j - 1]) {
				arr[j] = arr[j - 1];//后移一位
			}
			else {
				arr[j] = tmp;
				break;
			}
		}
	}
	printf("\n");

	p = (*L)->next;//p重新回到链头
	for (i = 0;i < 10;i++) {//把链表元素赋给arr
		p->data = arr[i];
		p = p->next;
	}
}

int main() {
	LinkList L;
	InitList2(&L);//初始化一个带头结点的链表3,9,1,4,2,8,5,7,6,10
	printf("初始链表为:");
	print2(L);

	linkSort(&L);
	printf("排序后链表为:");
	print2(L);
	
	return 0;
}

在这里插入图片描述
ps:链表定义及初始化,还有打印函数

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdbool.h>
#include<malloc.h>
//单链表定义
//链表结点
int A[10] = { 3,9,1,4,2,8,5,7,6,10 };
typedef struct {//定义单链表结点类型
	int data;//数据域
	struct LNode *next;//指针域
}LNode, *LinkList;

//带头结点初始化-尾插法
void InitList2(LinkList* L) {
	(*L) = (LNode*)malloc(sizeof(LNode));
	(*L)->next = NULL;
	LNode* rear = (*L);//标记表尾
	int i = 0;
	for (i = 0;i < 10;i++) {
		LNode* p = (LNode*)malloc(sizeof(LNode));//创建一个新结点
		p->data = A[i];//新结点赋值
		rear->next = p;//接到L上
		rear = p;//标记表尾
	}
	rear->next = NULL;
}

void print2(LinkList L) {//打印带头结点的链表
	LNode* i = L->next;//用i指针遍历整个链表
	while (i != NULL) {
		printf("%d ", i->data);
		i = i->next;
	}
}

http://www.kler.cn/news/107386.html

相关文章:

  • pytorch 入门 (五)案例三:乳腺癌识别识别-VGG16实现
  • Unity的live2dgalgame多语言可配置剧情框架
  • 10月份程序员书单推荐
  • vscode下ssh免密登录linux服务器
  • PostgreSQL基于Patroni方案的高可用启动流程分析
  • Centos使用war文件部署jenkins
  • [量化投资-学习笔记003]Python+TDengine从零开始搭建量化分析平台-Grafana画K线图
  • 【2023.10.25练习】数据库-函数1
  • 【CSS】包含块
  • 【2024秋招】2023-9-16 贝壳后端开发一面
  • 【Java网络原理】 五
  • canvas基础3 -- 交互
  • 【网络安全 --- 任意文件下载漏洞(1)】任意文件下载漏洞
  • [SQL开发笔记]DELETE 语句:删除表中的行
  • C++ 构造函数
  • 记:2023羊城杯-Ez加密器-题目复现和学习记录““
  • Unity C#中LuaTable、LuaArrayTable、LuaDictTable中数据的增删改查
  • 使用Jetpack Compose构建Flappy Musketeer街机游戏
  • C语言每日一题(20)最大公因数等于 K 的子数组数目
  • 《C和指针》笔记35:结构体
  • HackTheBox-Starting Point--Tier 0---Preignition
  • CAD2024最新中文版安装教程分享
  • 关于维度上的注意事项
  • LeetCode217——存在重复元素
  • 【PG】PostgreSQL字符集
  • 1-径向基(RBF)神经网络PID控制器仿真
  • 如何使用python快速修改Excel表单中的大量数据
  • python常用操作汇总
  • 华为NAT配置实例(含dhcp、ospf配置)
  • Java项目中将MySQL改为8.0以上