创建单链表

news2024/11/22 9:01:57

一、完成单链表操作,要求节点构造类型。

1、建立学生结构体(学号,姓名,成绩)

2、循环调用头插法创建整表

3、遍历单链表

4、任意位置插入一个完整的学生信息

5、任意位置删除一个学生。

6、单链表逆置

7、单链表按照学生成绩排序。

#include <stdio.h>
#include <stdlib.h>

//创建学生结构体
typedef struct
{
	int id;
	char name[20];
	float score;
}stu;


//创建单链表
typedef struct node
{
	union {
		int len;
		stu data;
	};
	struct node* next;
}Link, * Plink;


Plink create()
{
	Plink p = malloc(sizeof(Link));
	if (p == NULL)
	{
		printf("申请失败\n");
		return NULL;
	}
	p->len = 0;
	p->next = NULL;
	return p;
}

//头插法
int front_insert(Plink L, stu e)
{
	if (L == NULL)
	{
		printf("头插失败\n");
		return -1;
	}
	Plink p = malloc(sizeof(Link));
	p->data = e;

	p->next = L->next;
	L->next = p;
	L->len++;
	return 0;
}

//遍历单链表
int output_link(Plink L)
{
	if (L == NULL || L->len == 0)
	{
		printf("链表为空\n");
		return -1;
	}
	int i;
	Plink t = L;
	for (i = 0; i < L->len; i++)
	{
		t = t->next;
		printf("学号:%d\t姓名:%s\t分数:%.2f\n", t->data.id, t->data.name, t->data.score);
	}
	printf("\n");
	return 0;
}

//在任意位置插入节点
int anypos_insert(Plink L, int pos, stu e)
{
	if (pos<1 || pos>L->len + 1 || L == NULL)
	{
		printf("插入失败\n");
		return -1;
	}
	int i;
	Plink t = L;
	for (i = 0; i < pos - 1; i++)
	{
		t = t->next;
	}
	Plink p = malloc(sizeof(Link));
	p->data = e;
	p->next = t->next;
	t->next = p;
	L->len++;
	return 0;
}

//在任意位置删除
int anypos_dele(Plink L, int pos)
{
	if (pos<1 || pos>L->len || L->len == 0 || L == NULL)
	{
		printf("删除失败\n");
		return -1;
	}

	Plink t = L;
	int i;
	for (i = 0; i < pos - 1; i++)
	{
		t = t->next;
	}
	Plink Q = t->next;
	t->next = t->next->next;
	free(Q);
	Q = NULL;
	L->len--;
	return 0;
}

//逆置
int nizhi(Plink L)
{
	Plink Q = L->next;
	Plink t = Q->next;
	while (t != NULL)
	{
		Q->next = t->next;
		t->next = L->next;
		L->next = t;

		t = Q->next;
	}
	return 0;
}

//冒泡排序
int bublu(Plink L)
{
	int i;
	Plink j;
	stu temp;
	for (i = 1; i < L->len; i++)
	{
		for (j = L->next; j->next != NULL; j = j->next)
		{
			if (j->data.score > j->next->data.score)
			{
				temp = j->data;
				j->data = j->next->data;
				j->next->data = temp;
			}
		}
	}
}


//主函数
int main(int argc, const char* argv[])
{
	stu a[5] = { {1001,"小张",90},{1003,"小王",95},{1002,"小刘",88},{1005,"小杨",99},{1004,"小邢",89} };
	Plink L = create();

	int i;
	for (i = 0; i < 5; i++)
	{
		front_insert(L, a[i]);//头插法
	}

	output_link(L);

	stu e = { 1009,"小李",99 };
	anypos_insert(L, 2, e);
	output_link(L);

	anypos_dele(L, 2);
	output_link(L);

	nizhi(L);
	output_link(L);

	bublu(L);
	output_link(L);
	return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2161225.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vulnhub:Fowsniff 1

靶机下载地址 信息收集 主机发现 nmap 192.168.31.0/24 -Pn -T4 靶机ip&#xff1a;192.168.31.134 端口扫描 nmap 192.168.31.134 -A -p- -T4 开放端口22(ssh)、80(http)&#xff0c;和两个明文传输的邮件端口110(pop3)、143(imap)。 HTTP 访问http://192.168.31.134。…

云栖实录 | 阿里云 OpenLake 解决方案重磅发布:多模态数据统一纳管、引擎平权联合计算、数据共享统一读写

新一轮人工智能浪潮正在重塑世界&#xff0c;以生成式 AI 为代表的技术快速应用&#xff0c;推动了数据与智能的深化融合&#xff0c;同时也给数据基础设施带来了全新的变革与挑战。面向 AI 时代的数据基础设施如何构建&#xff1f;底层数据平台架构在 AI 时代如何演进&#xf…

word怎么加密?掌握这4种加密技巧,保护你的文件安全!

数字化办公社会&#xff0c;文档安全显得尤为重要。 无论是商业机密、个人隐私还是学术成果&#xff0c;我们都希望它们能在传递过程中得到妥善保护。 Word文档作为最常用的文档处理工具&#xff0c;用户有效保障文档的安全性是维护企业信息安全的重要渠道。 Word文档的加密是…

纯血鸿蒙APP开发启动页面无法全屏解决办法

先来看问题&#xff1a; 本身APP并不需要全屏&#xff0c;但是启动页这种特殊页面确实需要忽略页面上下的安全边界区域&#xff0c;解决办法也很简单&#xff0c;直接上代码&#xff1a; Image($r(app.media.launch_icon)) .width(100%) .height(100%) .expandSafeArea([SafeA…

mysql 重置密码

1.关闭mysql 服务 systemctl stop mysql.serivce 2.修改mysql的配置文件 /etc/my.cnf vi /etc/my.cnf#添加跳过登陆验证配置 skip-grant-tables 3.启动mysql systemctl start mysql.serivce 4.登陆mysql #进入到mysql的安装路径 cd /usr/local/mysql/mysql8.0/bin/ #登陆 …

SpringBoot文档管理系统:性能优化

第3章 系统分析 3.1 需求分析 在线文档管理系统主要是为了提高工作人员的工作效率和更方便快捷的满足员工&#xff0c;更好存储所有数据信息及快速方便的检索功能&#xff0c;对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑员工的可操作性&#xff0c;遵循…

windows桌面管理软件推荐:一键整理桌面!美化电脑桌面小助手!

windows桌面管理软件推荐来咯&#xff01;在繁忙的工作和生活中&#xff0c;一个整洁、有序的电脑桌面不仅能提升工作效率&#xff0c;还能带来愉悦的视觉体验。然而&#xff0c;随着文件的增多&#xff0c;桌面往往变得杂乱无章。幸运的是&#xff0c;市面上有许多优秀的Windo…

CDGA|解锁数据价值:基础数据治理的至关重要性

在当今这个数据驱动的时代&#xff0c;数据已成为企业最宝贵的资产之一&#xff0c;其蕴含的价值远超传统资源。然而&#xff0c;要真正解锁数据的潜在价值&#xff0c;并非简单收集与存储即可达成&#xff0c;而是需要一套科学、系统的数据治理体系作为支撑。本文旨在探讨基础…

在idea里运行swing程序正常,但是在外部运行jar包却报错,可能是jdk版本问题

在idea里运行swing程序异常&#xff0c;报Caused by: java.awt.HeadlessException错误 System.setProperty("java.awt.headless","false");加上这句话

Spring Data Rest 远程命令执行命令(CVE-2017-8046)

&#xff08;1&#xff09;访问 http://your-ip:8080/customers/1&#xff0c;然后抓取数据包&#xff0c;使用PATCH请求来修改 PATCH /customers/1 HTTP/1.1 Host: Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MS…

Solidity——抽象合约和接口详解

&#x1f680;本系列文章为个人学习笔记&#xff0c;目的是巩固知识并记录我的学习过程及理解。文笔和排版可能拙劣&#xff0c;望见谅。 Solidity中的抽象合约和接口详解 目录 什么是抽象合约&#xff1f;抽象合约的语法接口&#xff08;Interface&#xff09;的定义接口的语…

Gooxi AMD Milan平台4U8卡AI服务器,兼具性能与成本的完美之选

近日&#xff0c;为了帮助企业从容应对当下多样化场景的算力挑战&#xff0c;Gooxi发布了基于AMD Milan平台的全新4U8卡AI服务器&#xff0c;在性能以及成本实现了完美平衡&#xff0c;并且在灵活性、稳定性、能耗方面实现了持续升级。 Gooxi AMD Milan平台4U8卡AI服务器是一款…

Pinia的快捷使用方法

安装Pinia npm install pinia 在main.js里面引入并注册挂载使用 在src下创建一个store inex.js // index.js import { defineStore } from pinia import { computed, ref } from vue //更简洁的的模块化 transferringValuesBetweenComponents simulationModule //简单定义了…

计算机毕业设计电影票购买网站 在线选票选座 场次订票统计 新闻留言搜索/springboot/javaWEB/J2EE/MYSQL数据库/vue前后分离小程序

系统功能 ‌在线选票选座‌&#xff1a;用户可浏览电影场次&#xff0c;选择座位并生成订单。‌场次订票统计‌&#xff1a;系统实时统计各场次订票情况&#xff0c;便于影院管理。‌新闻发布与留言‌&#xff1a;发布最新电影资讯&#xff0c;用户可留言互动。‌搜索功能‌&a…

python标识符和关键字

1、标识符 1.1 写法 标识符由字母、下划线和数字组成&#xff0c;且数字不能开头。严格区分大小写。不能使用关键字。 # 标识符由字母、下划线和数字组成&#xff0c;且数字不能开头。 # a_1_$ 1 # print(a_1_$)# 严格区分大小写。 # Animal 1 # print(animal)# 不能使用关…

Debezium

Debezium 是一个开源的分布式平台&#xff0c;用于捕获数据库变化数据&#xff08;Change Data Capture, CDC&#xff09;。允许用户实时地从数据库中捕捉到数据的变化&#xff08;如插入、更新和删除操作&#xff09;&#xff0c;并将这些变化以结构化的数据流的形式提供给其他…

Python学习——【6.1】文件操作

【6.1】文件操作 一、文件的编码 问题&#xff1a;计算机只能识别0和1&#xff0c;那么我们丰富的文本文件是如何被计算机识别&#xff0c;并存储在硬盘中的呢&#xff1f; 答&#xff1a;使用编码技术&#xff08;密码本&#xff09;将内容翻译成0和1存入。 编码技术即翻译的…

邮件发送基础:深入SMTP协议、配置邮件服务器及Python实现

目录 引言 SMTP协议基础 定义与功能 工作原理 特性与优势 邮件服务器配置 第三方邮件服务商配置 自建邮件服务器配置 使用Python发送邮件 安装smtplib和email模块 发送简单纯文本邮件 发送HTML格式邮件 发送带附件的邮件 完整示例&#xff1a;发送带附件的HTML邮…

Figma 中要放大并下载 UI 设计中的图标

Figma 中要放大并下载 UI 设计中的图标&#xff0c;通常可以通过以下几步操作来实现&#xff1a; 1. 放大图标&#xff1a; 打开 Figma 文件并找到你想要放大的图标。 选中图标&#xff0c;点击界面右上角的 “缩放”工具&#xff08;放大镜图标&#xff09;&#xff0…

静态路由和默认路由(实验)

目录 一、实验设备和环境 1、实验设备 2、实验环境 &#xff08;1&#xff09;实验拓扑图 &#xff08;2&#xff09;实验命令列表 二、实验记录 1、直连路由与路由表查看 步骤1:建立物理连接并运行超级终端。 步骤2:在路由器上查看路由表。 2、静态路由配置 步骤1:配…