针对考研的C语言学习(定制化快速掌握重点5)

顺序表

特点:

写代码主要就是增删改查!!!

写代码的边界性非常重要以及考研插入和删除的位置都是从1开始,而数组下标是从0开始

【注】下标和位置的关系

线性表最重要的是插入和删除会涉及边界问题以及判断是否合法

【判断合法】“位置<1 || 位置 > 线性表的长度加一”   这是插入数据的判断合法性

                       因为插入数据只能在数据中间插入或者在数据末尾插入

                       “位置<1 || 位置 > 线性表的长度” 这是删除数据的合法性边界判断

                        因为删除数据只能在已有数据中进行删除

插入代码展示及解释

所谓的插入只不过是"把要插入的位置的数据以及该位置后面的数据都统一往后面移动而已"

所以应该有两种方法

“1.从要插入的位置的原始数据开始往后移,但是这样会导致啥问题了???”

对的!!!会把后面的原始数据全部覆盖了

所以要从后面往前面移动

//插入
bool insert_list(SeqList &l,int pos,int data)
{if (pos<1 || pos > l.len + 1){return false;}if (l.len == MAX_NUM){return false;}for (int i = l.len; i >= pos ; --i){l.data[i] = l.data[i - 1];}l.data[pos-1] = data;//位置和下标差1++l.len;return true;
}
#include<stdio.h>
#define MAX_NUM 20
typedef int ElemType;
typedef struct {ElemType data[MAX_NUM];int len;//实际长度
}SeqList;
bool insert_list(SeqList &l,int pos,int data)
{if (pos<1 || pos > l.len + 1){return false;}if (l.len == MAX_NUM){return false;}for (int i = l.len; i >= pos ; --i){l.data[i] = l.data[i - 1];}l.data[pos-1] = data;//位置和下标差1++l.len;return true;
}
void print_list(SeqList& l)
{for (int i = 0; i < l.len; ++i){printf("%3d", l.data[i]);}printf("\n");
}
bool del_list(SeqList& l, int pos)
{if (pos<1 || pos > l.len){return false;}for (int i = pos-1; i < l.len-1; ++i){l.data[i] = l.data[i + 1];}--l.len;return true;
}
bool search_list(SeqList& l, int pos)
{if (pos<1 || pos > l.len)return false;elsereturn true;
}
int main()
{SeqList l;l.data[0] = 1;l.data[1] = 2;l.data[2] = 3;l.len = 3;int insert_data = 0;scanf("%d", &insert_data);bool ret = insert_list(l, 2, insert_data);if (ret)print_list(l);elseputs("false");int pos = 0;scanf("%d", &pos);ret = del_list(l, pos);if (ret)print_list(l);elseputs("false");return 0;
}

链表

增删查改

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct LNode {ElemType data;struct LNode* next;
}Lnode,*LinkList;
void insert_head_list(LinkList& l)
{ElemType data = 0;scanf("%d", &data);	while (data != 9999){LinkList tmp = (LinkList)malloc(sizeof(Lnode));tmp->data = data;tmp->next = l->next;l->next = tmp;scanf("%d", &data);}
}
void insert_tail_list(LinkList& l)
{LinkList cur = l;ElemType data = 0;scanf("%d", &data);while (data != 9999){LinkList tmp = (LinkList)malloc(sizeof(Lnode));tmp->next = cur->next;tmp->data = data;cur->next = tmp;cur = tmp;scanf("%d", &data);}
}
//删除
bool delete_list(LinkList& l,int pos)
{//头结点的位置是0,真正有数据的为第一个节点,也就是第一个位置if (pos < 1){return false;}LinkList cur = l -> next;//找要删除位置的前一个节点的位置for (int i = 1; cur && i < pos-1 ; ++i){cur = cur->next;}LinkList del = cur->next;cur->next = del->next;//断链free(del);return true;
}
void print_list(LinkList& l)
{LinkList cur = l->next;while (cur){printf("%d ", cur->data);cur = cur->next;}printf("\n");
}bool insert_pos(LinkList& l, int pos,int val)
{//头结点的位置是0,真正有数据的为第一个节点,也就是第一个位置if (pos < 1){return false;}LinkList cur = l->next;//找要插入位置的前一个节点的位置for (int i = 1; cur && i < pos - 1; ++i){cur = cur->next;}LinkList v = (LinkList)malloc(sizeof(LNode));v->data = val;v->next = cur->next;cur->next = v;return true;
}int main()
{LinkList l = (LinkList)malloc(sizeof(Lnode)); //存储头节点的头指针l->next = NULL;//insert_head_list(l);//头插法insert_tail_list(l);//尾插法print_list(l);delete_list(l, 2);print_list(l);insert_pos(l, 3, 999);print_list(l);return 0;
}

后序会补上

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC源码-AbstractHandlerMethodMapping处理器映射器将@Controller修饰类方法存储到处理器映射器

SpringMVC九大内置组件之HandlerMapping处理器映射器-AbstractHandlerMethodMapping类以及子类RequestMappingHandlerMapping如何将Controller修饰的注解类以及类下被注解RequestMapping修饰的方法存储到处理器映射器中。 从RequestMappingHandlerMapping寻找: AbstractHandle…

C语言VS实用调试技巧

文章目录 一、什么是bug?二、什么是调试&#xff1f;三、Debug和Release四、VS调试快捷键4.1环境准备4.2调试快捷键 五、监视和内存观察5.1监视5.2内存 六、调试举例七、编程常见错误归类7.1编译型错误7.2链接型错误7.3运行时错误 一、什么是bug? &#x1f34e;bug本意是 “…

前端——切换轮播图

学完前端js小知识后&#xff0c;动手操作的一个简单图片轮播图。 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"keywords" content"关键词信息"><meta name"des…

MATLAB绘图基础9:多变量图形绘制

参考书&#xff1a;《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。 9.多变量图形绘制 9.1 气泡图 气泡图用于展示三个或更多变量变量之间的关系&#xff0c;气泡图的组成要素&#xff1a; 横轴( X {\rm X} X轴)&#xff1a;表示数据集中的一个变量&#xff0c…

带徒实训项目实战讲义分享:ApiFirst文档对比功能页面开发2

前一篇&#xff1a;带徒实训项目实战讲义分享&#xff1a;ApiFirst文档对比功能页面开发 亲爱的学员朋友们好&#xff0c;本小节跟小卷一起来学习用thymeleaf模板技术来渲染数据模型到表格中&#xff0c;通过本小节的学习&#xff0c;你会真正将thymeleaf模板技术应用到实处&a…

Qt获取本机Mac地址、Ip地址

一、简述 今天给大家分享一个获取本机IP地址和Mac地址的方法&#xff0c;经过多次测试&#xff0c;台式机、笔记本等多个设备&#xff0c;暂时没有发现问题。 由于很多时候本地安装了虚拟机、蓝牙、无线网卡或者其他设备等&#xff0c;会有多个Mac地址&#xff0c;所以需要进…

汽车信息安全 -- 存到HSM中的密钥还需包裹吗?

目录 1.车规芯片的ROM_KEY 2.密钥加密与包裹 3.瑞萨RZ\T2M的密钥导入 4.小结 在车控类ECU中&#xff0c;我们通常把主控芯片MCU中的HSM以及HSM固件统一看做整个系统安全架构的信任根。 所以大家默认在HSM内部存储的数据等都是可信的&#xff0c;例如CycurHSM方案中使用HSM…

ControlGAN:Controllable Text-to-Image Generation

1 研究目的 当前的生成网络通常是不可控的&#xff0c;这意味着如果用户更改句子的某些单词&#xff0c;合成图像将与原始文本生成的合成图像显着不同&#xff1b;当给定的文本描述&#xff08;例如颜色&#xff09;发生变化时&#xff0c;鸟类的相应视觉属性被修改&#xff0c…

easyexcel常见问题分析

文章目录 一、读取数字多了很多小数位的精度问题 一、读取数字多了很多小数位的精度问题 浮点型转成BigDecimal的时候会出现精度问题&#xff0c;例如 这儿设置的实体类对象类型是String&#xff0c;默认用到的是StringNumberConverter转换器 2.1.4 版本 public class Strin…

【无人机设计与技术】四旋翼无人机的建模

摘要 本项目的目标是通过 Simulink 建模和仿真&#xff0c;研究四旋翼无人机的建模、姿态控制、定点位置控制及航点规划功能。无人机建模包含了动力单元模型、控制效率模型和刚体模型&#xff0c;并运用这些模型实现了姿态控制和位置控制。姿态控制为无人机的平稳飞行提供基础…

计算机视觉实战项目4(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)

往期热门项目回顾&#xff1a; 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别-3d姿态识别 深度学习小白学习路线 AI健身教练-引体向上-俯卧撑计数…

在VMware虚拟机上部署polardb

免密登录到我们的虚拟机之后&#xff0c;要在虚拟机上部署polardb数据库&#xff0c;首先第一步要先克隆源码&#xff1a; 为了进SSH协议进行传输源码需要先进行下面的步骤&#xff1a; 将宿主机上的私钥文件复制到虚拟机上 scp "C:\Users\waitw\.ssh\id_rsa" ann…

ThinkPHP发送邮件教程:从配置到发送指南!

ThinkPHP发送邮件功能实现策略&#xff1f;Thinkphp如何发邮件&#xff1f; ThinkPHP作为一个流行的PHP框架&#xff0c;提供了强大的邮件发送功能&#xff0c;使得开发者可以轻松地在应用中集成邮件发送功能。AokSend将详细介绍如何在ThinkPHP中配置和发送邮件。 ThinkPHP发…

【Linux-基础IO】如何理解Linux下一切皆文件磁盘的介绍

目录 如何理解Linux系统上一切皆文件 1.物理角度认识磁盘 2.对磁盘的存储进行逻辑抽象 磁盘寻址 3.磁盘中的寄存器 如何理解Linux系统上一切皆文件 计算机中包含大量外设&#xff0c;操作系统想要管理好这些外设&#xff0c;就必须对这些外设进行先描述再组织&#xff0c…

【Linux 23】线程池

文章目录 &#x1f308; 一、线程池的概念&#x1f308; 二、线程池的应用场景&#x1f308; 三、线程池的实现 &#x1f308; 一、线程池的概念 线程池 (thread pool) 是一种利用池化技术的线程使用模式。 虽然创建线程的代价比创建进程的要小很多&#xff0c;但小并不意味着…

一篇文章快速学会docker容器技术

目录 一、Docker简介及部署方法 1.1Docker简介 1.1.1什么是docker 1.1.2 docker在企业中的应用场景 1.1.3 docker与虚拟化的对比 1.1.4 docker的优势 二 、部署docker 2.1 容器工作方法 2.2 部署第一个容器 2.2.1 配置软件仓库 2.2.2 安装docker-ce并启动服务 2.2.…

【AIGC】ChatGPT提示词解析:如何生成爆款标题、节日热点文案与完美文字排版

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;情绪化的吸睛爆款标题提示词使用方法 &#x1f4af;紧跟节日热点选题文案提示词使用方法 &#x1f4af;高效文字排版技巧提示词使用方法 &#x1f4af;小结 &#x1f4af…

数据结构-链表笔记

移除节点 203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListN…

Oracle数据库体系结构基础

关于Oracle体系结构 基于Oracle11g体系结构 目标&#xff1a; 了解Oracle体系结构掌握逻辑存储结构掌握物理存储结构熟悉Oracle服务器结构熟悉常用的数据字典 Oracle数据库管理中的重要的三个概念 实例&#xff08;instance):实例是指一组Oracle后台进程以及在服务器中分配…

安宝特分享 | AR技术重塑工业:数字孪生与沉浸式培训的创新应用

在数字化转型的浪潮中&#xff0c;AR&#xff08;增强现实&#xff09;技术与工业的结合正在呈现新的趋势和应用延伸。特别是“数字孪生”概念的崛起&#xff0c;为AR技术在工业中提供了独特而创新的切入点。 本文将探索AR如何与数字孪生、沉浸式体验和实用案例相结合&#xf…