【数据结构】王道课后习题(线性表)(一)(可直接运行)

2024 王道考研 数据结构+习题讲解_王道课后题pdf,差点挂在第四面 P4【2021版】1.2.1 算法的基本概念P5【2021版】1.2.2 算法的时间复杂度P6【2021版】1.2.3 算法的空间复杂度P7【2021版】2.1_线性表的定义和基本操作P8【2021版】2.2.1_顺序表的定义P9【2021版】2.2.2_1_顺序表的插入删除P10【2021版】2.2.2_2_顺序表的查找P11【2021版】2.3.1_单链表的定义P12【2021版】2.3.2_1_单链表的插入删除P13【2021版】2.3.2_2_单链表的查找P14【2021版】2.3.2_3_单链表的 阅读详情

1.01 删除最小值

1.1算法实现

完整题目如下:
在这里插入图片描述
显然,只需要遍历找到最小值,并用最后一个元素覆盖即可。
具体实现如下:

// 算法实现
bool popMinNum(SeqList &L, int &e) {
    // 判断表是否为空
    if(L.length == 0) {
        printf("The list is empty!");
        return false;
    }
    // 首先需要找到最小的数
    // 预设变量用于存储最小值及下标
    int min_num = L.data[0];
    int index = 0;
    for(int i = 1;i < L.length;i++) {
        if(L.data[i] < min_num) {
            min_num = L.data[i];
            index = i;
        }
    }
    // 删除元素并填入最后一个元素
    L.data[index] = L.data[L.length - 1];
    // 注意长度减一
    L.length -= 1;
    e = min_num;
    return true;
}

1.2 完整代码

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

#define InitSize 10

typedef struct {
    int *data;  // 数据
    int MaxSize;    // 最大容量
    int length; // 目前长度
} SeqList;

// 初始化
void InitList(SeqList &L) {
    // 为了方便,这里选择初始化时填入1-10
    // 申请10个整型的空间
    L.data = (int *)malloc(InitSize * sizeof(int));
    // 数据填入
    for(int i = 0;i < InitSize;i++) {
        L.data[i] = i + 1;
    }
    L.length = 10;
    L.MaxSize = InitSize;
}

// 算法实现
bool popMinNum(SeqList &L, int &e) {
    // 判断表是否为空
    if(L.length == 0) {
        printf("The list is empty!");
        return false;
    }
    // 首先需要找到最小的数
    // 预设变量用于存储最小值及下标
    int min_num = L.data[0];
    int index = 0;
    for(int i = 1;i < L.length;i++) {
        if(L.data[i] < min_num) {
            min_num = L.data[i];
            index = i;
        }
    }
    // 删除元素并填入最后一个元素
    L.data[index] = L.data[L.length - 1];
    // 注意长度减一
    L.length -= 1;
    e = min_num;
    return true;
}

// 判空操作
bool Empty(SeqList L) {
    // 直接根据长度判断即可
    if(L.length == 0) {
        return true;
    }
    return false;
}

// 顺序表的输出操作
bool PrintList(SeqList L) {
    // 若表为空,则不能输出
    if(Empty(L)) {
        return false;
    }
    // 循环遍历输出
    for(int i = 0;i < L.length;i++) {
        printf("data[%d]=%d\n", i, L.data[i]);
    }
    return true;
}

int main() {
    SeqList L;
    InitList(L);
    PrintList(L);
    printf("-------------------------------\n");
    int e;
    popMinNum(L, e);
    PrintList(L);
    printf("the delete num is %d\n", e);
}

2.02 逆置

2.1算法实现

完整题目如下:
在这里插入图片描述
要求空间复杂度为O(1),时间复杂度无要求,那么只需要循环换位即可实现。
代码如下:

// 算法实现
void reverse(SeqList &L) {
    for(int i = 0;i <= L.length / 2;i++) {
        // 中间变量
        int temp;
        // 交换次序
        temp = L.data[i];
        L.data[i] = L.data[L.length - i - 1];
        L.data[L.length - i - 1] = temp;
    }
}

2.2 完整代码

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

#define InitSize 10

typedef struct {
    int *data;  // 数据
    int MaxSize;    // 最大容量
    int length; // 目前长度
} SeqList;

// 初始化
void InitList(SeqList &L) {
    // 为了方便,这里选择初始化时填入1-10
    // 申请10个整型的空间
    L.data = (int *)malloc(InitSize * sizeof(int));
    // 数据填入
    for(int i = 0;i < InitSize;i++) {
        L.data[i] = i + 1;
    }
    L.length = 10;
    L.MaxSize = InitSize;
}

// 算法实现
void reverse(SeqList &L) {
    for(int i = 0;i <= L.length / 2;i++) {
        // 中间变量
        int temp;
        // 交换次序
        temp = L.data[i];
        L.data[i] = L.data[L.length - i - 1];
        L.data[L.length - i - 1] = temp;
    }
}

// 判空操作
bool Empty(SeqList L) {
    // 直接根据长度判断即可
    if(L.length == 0) {
        return true;
    }
    return false;
}

// 顺序表的输出操作
bool PrintList(SeqList L) {
    // 若表为空,则不能输出
    if(Empty(L)) {
        return false;
    }
    // 循环遍历输出
    for(int i = 0;i < L.length;i++) {
        printf("data[%d]=%d\n", i, L.data[i]);
    }
    return true;
}

int main() {
    SeqList L;
    InitList(L);
    PrintList(L);
    printf("-------------------------------\n");
    reverse(L);
    PrintList(L);
    return 0;
}

3.03 删除所有指定元素

3.1算法实现

完整题目如下:
在这里插入图片描述
分析题目,要求时间复杂度O(n),那么就不能使用最简单的即找即删。可以设定一个变量k用于记录非x的个数,如果该元素不是x,那么就把它放到第k个,同时k+1,这样前k个即全部是非x,再将length设为k,即可以视为已经删除了所有x,且次序未改变。
代码如下:

// 算法实现
void deleteAllX(SeqList &L, int x) {
    int k = 0;  // 用于记录非x的个数
    for(int i = 0;i < L.length;i++) {
        // 如果该元素不是x,那么就把它放到第k个,同时k+1
        // k即是非x的个数,在遍历时,把非x的赋值给顺序表第k个位置
        // 这样前k个即全部是非x,再将length设为k,即可以视为已经删除了所有x,且次序未改变
        if(L.data[i] != x) {
            L.data[k] = L.data[i];
            k++;
        }
    }
    L.length = k;
}

3.2 完整代码

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

#define InitSize 10

typedef struct {
    int *data;  // 数据
    int MaxSize;    // 最大容量
    int length; // 目前长度
} SeqList;

// 初始化
void InitList(SeqList &L) {
    // 为了方便,这里选择初始化时填入1-10
    // 申请10个整型的空间
    L.data = (int *)malloc(InitSize * sizeof(int));
    // 数据填入
    for(int i = 0;i < InitSize;i++) {
        L.data[i] = i + 1;
    }
    L.length = 10;
    L.MaxSize = InitSize;
}

// 算法实现
void deleteAllX(SeqList &L, int x) {
    int k = 0;  // 用于记录非x的个数
    for(int i = 0;i < L.length;i++) {
        // 如果该元素不是x,那么就把它放到第k个,同时k+1
        // k即是非x的个数,在遍历时,把非x的赋值给顺序表第k个位置
        // 这样前k个即全部是非x,再将length设为k,即可以视为已经删除了所有x,且次序未改变
        if(L.data[i] != x) {
            L.data[k] = L.data[i];
            k++;
        }
    }
    L.length = k;
}

// 判空操作
bool Empty(SeqList L) {
    // 直接根据长度判断即可
    if(L.length == 0) {
        return true;
    }
    return false;
}

// 顺序表的输出操作
bool PrintList(SeqList L) {
    // 若表为空,则不能输出
    if(Empty(L)) {
        return false;
    }
    // 循环遍历输出
    for(int i = 0;i < L.length;i++) {
        printf("data[%d]=%d\n", i, L.data[i]);
    }
    return true;
}

int main() {
    SeqList L;
    InitList(L);
    PrintList(L);
    printf("-------------------------------\n");
    deleteAllX(L, 3);
    PrintList(L);
    return 0;
}
23王道数据结构代码题全解(二) 此次更新线性表(14/14)计划更新23王道数据结构所有课后代码习题的实现,虽然考试写的一般都是伪代码,但是强迫症的我还是全部实现了一遍,都可以编译运行,包含暴力解和最优解,仓库在这里 https://github.com/mancuoj/wangdao 阅读详情

相关推荐

数据结构(王道计算机考研笔记)

数据结构

weixin_49393290的博客 9749

2021 王道考研 数据结构+习题讲解

2021 王道考研 数据结构 P1【2021版】0.0 课程指南 P2【2021版】1.1.0 开篇_数据结构在学什么 P3【2021版】1.1.1 数据结构的基本概念 P4【2021版】1.2.1 算法的基本概念 P5【2021版】1.2.2 算法的时间复杂度 P6【2021版】1.2.3 算法的空间复杂度 P7【2021版】2.1_线性表的定义和基本操作 P8【2021版】2.2.1_顺序表的定义 P9【2021版】2.2.2_1_顺序表的插入删除 P10【2021版】2.2.2_2_顺序表的查找 P1

weixin_47312141的博客 4万+

王道数据结构线性表基本操作实现

#include<iostream> using namespace std; //#define MaxSize 50 //线性表最大长度 #define InitSize 100 //表长度初始定义 typedef int ElemType; //typedef struct { // ElemType data[MaxSize]; ...

FEEL的博客 1334

王道数据结构线性表课后习题

1.1.从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删除的元素的值,空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行 。bool Del_Min(SqList &amp;L, ElemType &amp;value) { if (L.length == NULL) return false; value = L.data[0]; //假设0号元素的值最小 i...

lisa丶 2538

23王道数据结构代码题全解(三)

此次更新链表(8/25),计划更新23王道数据结构所有课后代码习题的实现,虽然考试写的一般都是伪代码,但是强迫症的我还是全部实现了一遍,都可以编译运行,包含暴力解和最优解,仓库在这里 https://github.com/mancuoj/wangdao

漫磋嗟 3148

23王道数据结构代码题全解(四)

此次更新链表(17/25),计划更新23王道数据结构所有课后代码习题的实现,虽然考试写的一般都是伪代码,但是强迫症的我还是全部实现了一遍,都可以编译运行,包含暴力解和最优解,仓库在这里 https://github.com/mancuoj/wangdao

漫磋嗟 2286

王道课后题之线性表

#1.搜索顺序表,查找最小值元素,用最后的元素代替它 ##思路:先找到最小值,再替换 bool DelMin(sqlList &L,Elemtype &value){ if(L.length == 0)return false; int min = L.data[0]; int index = 0; for(int i=1; i<L.length; i++){ if(L.data[i] < min){ mi

weixin_43893634的博客 259

王道22数据结构课后习题(第二章2.2.3)

2、设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)。 3、对长度为n的顺序表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,删除线性表中所有值为x的数据元素。 4、从有序顺序表中删除其值在[s,t]之间的所有元素,若s或t不合理或顺序表为空,则显示出错误信息并退出运行。 5、从顺序表中删除其值在给定值s与t之间(要求 s < t)的所有元素,若s或t不合理或顺序表为空,则显示出错误信息并退出运行。 暴力方法 双指针方法 6、从有序顺序表中删除所有其值重复

艾 1628

2024王道数据结构课后习题代码

2.1.2 顺序表初始化(动态) 2.1.3 顺序表上插入和删除 2.2综合题 这些题是王道教材的p18-p19的1-14题,2.2.1即为第一题 2.2.2 2.2.3 未完待续… 2023年四月末之前将更新完本书所有习题

m0_51057239的博客 5238

【2025王道数据结构】王道数据结构课后代码题汇总答案C、C++代码实现完整版大全(可直接运行)

下面内容是本人在复习王道数据结构的过程中, 对一些算法设计题目的全部实现(答案解析全部都是伪码或者函数的部分实现,不可调试运行),不一定是最优的, 但是都能保证端到端测试运行,本文会陆陆续续更新,个人水平有限,可能文章里面存在一些问题,还望各位多多指点。   加油,阿光!!!我看好你哦😋😋😋 以下摘自王道2023年数据结构考研复习指导题目 文章目录 😉第2章:线性表 ✌18页综合应用题 题号 题解链接 1 传送门 2 传送门 3 传送门 4 传送门 5 传送.

优快云 精品推荐 1万+

王道数据结构考研复习指导(2022年)-选择题(优快云).pdf

王道数据结构考研复习指导(2022年)-选择题汇总,手动录入+清晰版

王道数据结构课代表 - 考研数据结构 第二章 线性表 究极精华总结笔记(C版本)

数据结构与算法 笔记导航🚥🚥🚥 🥬 第一章 绪论 🥕 第二章 线性表 🥪 第三章 栈和队列 🍊 第四章 串-KMP(看毛片算法) 🍒 第五章 树和二叉树 🍀 第六章 图 🍚 第七章 查找(B树、散列表) 🧄 第八章 排序 (内部排序:八大排序动图演示与实现 + 外部排序) 🍔 数据结构与算法 复试精简笔记 🎨 408 全套初复试笔记汇总 传送门 🏃‍🏃‍🏃‍ 如果本篇文章对大家起到帮助的话,跪求各位帅哥美女们,求赞👍 、求收藏、求关注!

clzZ2的博客 1万+

王道咸鱼学长408课件PDF整理(数据结构-计算机组成-操作系统)

适合大学计算机本科生初学者,考研计算机408,王道数据结构、计算机组成、操作系统课件整理,基本上没有水印,各科合并为一个PDF文件,并且手动加上了标签,便于定位和查阅。

探秘数据结构世界:王道数据结构课后代码实践

探秘数据结构世界:王道数据结构课后代码实践 在这个快速发展的编程时代,数据结构始终是程序员的基石,它揭示了复杂问题背后的逻辑结构。今天,我想要向大家推荐一个特别的开源项目——这是一个基于 Visual Studio 2019 实现的王道数据结构课后大题代码库,带你重温经典,挑战自我。 项目介绍 这个开源项目是一份由 C/C++ 编写的代码集,涵盖了《王道数据结构》教材中的所有课后大题,总计96道题...

gitblog_01013的博客 1059

保姆级教程:用SAP PS管理电梯/大型设备项目(ETO/ATO模式)从成本收集到开票结算

本文详细解析了SAP PS模块在ETO/ATO项目中的全流程成本管理实践,特别针对电梯/大型设备制造行业。从成本收集到开票结算,通过WBS元素、网络活动等核心架构设计,结合F-02、CJ20N等事务代码,实现设计、生产、物流及现场服务各阶段的精准成本控制,助力企业提升项目利润率与财务效率。

weixin_30444105的博客 457

学习笔记( 11 ) - 解决:finalshell连接虚拟机(ubuntu)超时,主机ping不通虚拟机,主机没有VMnet8网卡, Connection refused: connect

解决:finalshell连接虚拟机(ubuntu)超时,主机ping不通虚拟机,主机没有VMnet8网卡, Connection refused: connect

烟溪彭于晏的博客 2万+

2023王道数据结构考研习题汇总

2023数据结构考研复习

Eumenides_Suki的博客 6077

2021 王道考研 数据结构+习题讲解_王道课后题pdf

链接: https://pan.baidu.com/s/1GievaM8_-gBOEA-fV6GqYg 提取码: vshu 复制这段内容后打开百度网盘手机App,操作更方便哦[知识强化]第三章 栈和队列。链接: https://pan.baidu.com/s/1JwhYC3fHlgUTgr8qh0n3xQ 提取码: kv8s 复制这段内容后打开百度网盘手机App,操作更方便哦[知识强化]第八章 排序。

2501_90391156的博客 1390

【参数不确定】敏感性分析(sensitivity analysis)

【运筹学】灵敏性分析

羊肉蛋花汤的博客 14万+

基于单片机的智能体重秤设计与嵌入式程序实现

智能体重秤的基本功能是测量用户的体重,并将数据通过无线方式传输到终端设备(如智能手机、电脑或云平台)进行管理。体重测量:实时测量用户体重,并进行数据存储。BMI(体质指数)计算:基于体重和身高计算BMI值,帮助用户了解健康状况。多用户管理:通过蓝牙或Wi-Fi技术支持多用户体重数据记录。健康数据分析:结合历史数据分析体重变化趋势。语音播报:通过语音播报用户体重,便于老人或视力不便的人士使用。数据同步:通过App或云平台同步数据,进行长期健康监控。

2201_76125393的博客 1755

24王道考研408数据结构代码整合(学习用)

define MaxSize 10 //定义最大长度//用静态的“数组”存放数据元素int length;//顺序表的当前长度}SeqList;//顺序表的类型定义(静态分配方式)//基本操作——初始化一个顺序表i

Ch_ensf的博客 1万+

BLDC&PMSM电机控制器硬件设计工程(八)72V 10kW电机控制器原理图工程及库文件

电机控制器基本需求:接口类型;MCU平台;通信接口;供电;信号采集;信号输出;功率;EMC或者认证需求。

小幽余生不加糖 372

王道数据结构课后代码题(可直接运行,不断更新)

题目目录1、从线性表中删除最小元素,并将最后一个值赋值2、逆置线性表3、删除线性表指定元素x 下面是我所遇到的数据结构的代码题,哈哈哈做个记录,可能算法不够优秀嘻嘻!! 1、从线性表中删除最小元素,并将最后一个值赋值 /** * 从顺序表中删除具有最小的元素(假设唯一)并由函数返回被删除元素的值, * 空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行 * @return */ #include "bits/stdc++.h" using namespace std; #defi

weixin_45552475的博客 2340

不会C# Winform用户界面设计?是因为没有掌握这些控件(建议收藏)

文章目录6.1 常用控件6.1.1 单选按钮(RadioButton)6.1.2 复选框(CheckBox)6.1.3 框架1. 面板控件Panel2. 分组框GroupBox3. TabControl控件6.1.4 应用实例6. 2 列表框和组合框6.2.1 列表框(ListBox)6.2.2 组合框(ComboBox )6.2.3 应用实例6.3 用户交互界面6.3.1 滚动条和进度条6.3.2 定时器6.3.3 菜单设计菜单设计概述MenuStrip和ContextMenuSt

智慧空间实验室 2919

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: 【数据结构】【王道】【线性表】顺序表实现及基本操作(可直接运行)
下一篇: 【数据结构】【线性表】王道课后习题【04.删除有序顺序表中指定范围的元素】(可直接运行)
Silver  Star
Silver Star 新星创作者: 大数据技术领域 新星创作者: 大数据技术领域
博客等级 码龄7年 1万+粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Silver Star

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值