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

针对考研的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;
}

链表

后序会补上


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

相关文章:

  • 如何让ollama本地模型使用code-interpreter(代码解释器)?
  • 高级java每日一道面试题-2024年9月30日-服务器篇[Redis篇]-Redis持久化有几种方式?
  • 3.4K Star,你的下一个商店
  • 计算机毕业设计 二手图书交易系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 钉钉x昇腾:用AI一体机撬动企业数字资产智能化
  • 【电机-概述及分类】
  • Elasticsearch深度攻略:核心概念与实践应用
  • 程序员如何准确评估手中的工作量
  • 《Linux从小白到高手》理论篇(七):Linux的时间管理运行级别启动过程原理详解
  • 被Karpathy誉为“蕴藏着类似ChatGPT的机会的AI产品Notebook LM”,它到底做对了什么?
  • JUC高并发编程5:多线程锁
  • 强化学习-python案例
  • Windows——解除Windows系统中文件名和目录路径的最大长度限制
  • 【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
  • 亚洲市场|人工智能对固态硬盘SSD需求影响
  • TI DSP TMS320F280025 Note15:串口SCI的使用
  • OpenGL ES 着色器(5)
  • TI DSP TMS320F280025 Note14:模数转换器ADC原理分析与应用
  • STL之list篇(下)(从底层分析实现list容器,逐步剥开list的外表)
  • 【Linux】进程替换