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

王道数据结构代码讲解

从顺序表中删除最小值的元素(假设唯一),并由函数返回被删除元素的值。空出的位置由最后一个元素填补。若顺序表为空,则显示出错信息并退出运行

第一步,为了做到题目要求的创建一个顺序表,需要先定义顺序表的数据结构。

#define MaxSize 50 // 定义顺序表的最大长度
typedef int ElemType; // 定义顺序表存储的元素类型为int// 定义顺序表的结构体
typedef struct{ElemType data[MaxSize]; // 存储元素的数组int length; // 顺序表当前长度
}SqList;

第二步,为了做到题目要求的删除顺序表中的最小值元素,需要先定义一个函数来实现这个功能。

// 定义删除最小元素的函数
bool DelMinSqlist(SqList &L, ElemType &e) {if(L.length == 0) { // 如果顺序表为空,则返回falsereturn false;}e = L.data[0]; // 假设第一个元素是最小的int pos = 0; // 记录最小元素的位置for(int i = 1; i < L.length; i++) { // 遍历顺序表if(L.data[i] < e) { // 如果找到更小的元素e = L.data[i]; // 更新最小元素pos = i; // 更新最小元素的位置}}L.data[pos] = L.data[L.length - 1]; // 将最后一个元素移动到最小元素的位置L.length--; // 顺序表长度减1return true; // 返回true表示删除成功
}

第三步,为了做到题目要求的初始化顺序表并添加元素,需要先编写main函数。

int main() {SqList L; // 创建顺序表LL.length = 0; // 初始化顺序表长度为0for(int i = 0; i < 20; i++) { // 循环添加20个元素L.data[i] = 25 - i; // 元素值从25递减到5L.length++; // 顺序表长度加1}ElemType e; // 用于存储被删除的最小元素的值bool ret = DelMinSqlist(L, e); // 调用函数删除最小元素if(ret) { // 如果删除成功printf("e=%d\n", e); // 打印被删除的元素} else { // 如果删除失败printf("fail\n");}// 打印剩余的顺序表元素,以验证删除操作for(int i = 0; i < L.length; i++) {printf("%d ", L.data[i]);}printf("\n");return 0;
}

完整代码:

#include <stdio.h>#define MaxSize 50 // 定义顺序表的最大长度
typedef int ElemType; // 定义顺序表存储的元素类型为int// 定义顺序表的结构体
typedef struct{ElemType data[MaxSize]; // 存储元素的数组int length; // 顺序表当前长度
}SqList;// 定义删除最小元素的函数
bool DelMinSqlist(SqList &L, ElemType &e) {if(L.length == 0) { // 如果顺序表为空,则返回falsereturn false;}e = L.data[0]; // 假设第一个元素是最小的int pos = 0; // 记录最小元素的位置for(int i = 1; i < L.length; i++) { // 遍历顺序表if(L.data[i] < e) { // 如果找到更小的元素e = L.data[i]; // 更新最小元素pos = i; // 更新最小元素的位置}}L.data[pos] = L.data[L.length - 1]; // 将最后一个元素移动到最小元素的位置L.length--; // 顺序表长度减1return true; // 返回true表示删除成功
}int main() {SqList L; // 创建顺序表LL.length = 0; // 初始化顺序表长度为0for(int i = 0; i < 20; i++) { // 循环添加20个元素L.data[i] = 25 - i; // 元素值从25递减到5L.length++; // 顺序表长度加1}ElemType e; // 用于存储被删除的最小元素的值bool ret = DelMinSqlist(L, e); // 调用函数删除最小元素if(ret) { // 如果删除成功printf("e=%d\n", e); // 打印被删除的元素} else { // 如果删除失败printf("fail\n");}// 打印剩余的顺序表元素,以验证删除操作for(int i = 0; i < L.length; i++) {printf("%d ", L.data[i]);}printf("\n");return 0;
}

http://www.mrgr.cn/news/41050.html

相关文章:

  • 一文彻底搞懂多模态 - 基础术语+基础知识+多模态学习
  • 网页前端开发之Javascript入门篇(3/9):条件控制
  • 操作系统错题解析【软考】
  • [MAUI]数据绑定和MVVM:MVVM的属性验证
  • 2024 全新体验:国学心理 API 接口来袭
  • 交换机如何开启FTP服务
  • 电商店铺多开自动回复软件
  • 【递归】11. leetcode 129 求根节点到叶节点数字之和
  • 高效论文写作指南:那些你必须知道的工具与平台
  • 基于SSM的大学生心理素质测评及咨询平台系统设计与实现(源码+定制+讲解)
  • Java高效编程(9):优先使用 try-with-resources 而非 try-finally**
  • QT系统学习篇(3)- Qt开发常用算法及控件原理
  • 综合实验二 利用智能小车探测环境
  • Microsoft 更新 Copilot AI,未來將能使用語音並看到你瀏覽的網頁
  • HISTCITE分析进阶
  • 水凝胶应用受限,3D打印助力,多材融合创新
  • 带徒实训项目ApiFirst实战讲义:导出文档支持API分组校验
  • 【递归】10. leetcode 111 二叉树的最小深度
  • Flink从ck拉起任务脚本
  • Visual Studio C# 处理和修复 WinRiver II 测量项目 MMT 文件错误