计算机数据结构代码题----Day02

顺序表代码题

题目01

从顺序表中删除其数值在给定数值为s与t之间,包含(s和t),要求(s<t)的所有元素,如果s或t的顺序不合理或者顺序表为空,则显示出错误信息。

1、算法图解
如下图

思路:

  1. 扫描顺序表,将S->t的数进行搜索,
  2. 扫描到该范围内进行记录数K+1,
  3. 若不是在s到t之间范围的数,那么就要进行前移动k个单位长度,与上一篇的删除数据进行设计。

实现步骤
1、核心代码:

 int k = 0;while(i<L.length){if(L.data[i] >= s  && L.data[i] <= t){//对s与t之间的数据范围进行扫描//若在当前范围内进行记录数的+1k++;}else{//若不在s到t之间的范围内//前移L.data[i-k] = L.data[i];i++;}}

2、完整框架代码:
设置布尔类型作为返回值类型

/**从顺序表中删除其数值在给定数值为s与t之间,*包含(s和t),要求(s<t)的所有元素,*如果s或t的顺序不合理或者顺序表为空*则显示出错误信息*/
//由于要对顺序表l进行删除操作,必须要添加&符号
boolean Del_SToTRange(Sqlist &L , ElemType s,ElemType t){//进行合法性判断if(s>=t || L.length == 0){return false;}//进行查询操作int k = 0;while(i<L.length){if(L.data[i] >= s && L.data[i] <= t){k++;//在该范围内进行记录数+1}else{L.data[i-k] = L.data[i];//前移K个单位i++;//往后继续进行遍历顺序表}}L.length = L.length - K;//统计顺序表长度return true;
}

题目02

从有序顺序表中删除所有值重复的元素,使表中所有的元素的值均不同。
分析

1、算法思路图解

思路

  1. 为保证扫描到相同位置的元素,设置两个指针i和j
  2. i指向第一个元素,作为“覆盖指针”
  3. j指向与i相邻的元素进行操作扫描元素
  4. 其实现的流程图为下图

    其实现的核心代码如下:
for(int i = 0,j=1;j<length;j++){//以j为操作指针进行遍历if(L.data[i] != L.data[j]){//i与j元素不相等//覆盖//首先要使i进行+1i++;L.data[i] = L.data[j];}//这里由于拥有for循环默认执行j++;//在i与j指向元素相等时进行j+1
}

代码的执行流程
这里以下图所示,举出刚开始i=0,j=1的情况下的图解

第二个例子
取i=1,j=2往后到j=3的执行过程:

  1. 当i=1,j=2这里的i与j所指向的元素相等
  2. 执行j++;
  3. j = 3;
  4. 由于j所指向的元素与i元素不等
  5. 进行覆盖
  6. i++ = 2;
  7. 现在2位置的数为3
  8. 总的前面三个位置的数为123

完整代码如下

/**从有序顺序表中删除所有值重复的元素,*使表中所有的元素的值均不同。*/
//由于要对顺序表l进行删除操作,必须要添加&符号
boolean Del_Same(Sqlist &L){//合法性判断if(L.length == 0){return false;}for(int i = 0,j=1;j<length;j++){if(L.data[i] != L.data[j]){i++;L.data[i] == L.data[j];}}L.length = i+1;return true;
}

题目03

已知在一个一维数组A【m+n】中依次存放两个线性表,(a1,a2,a3…am)和(b1,b2,b3…bn),试着编写一个函数,将数组中两个顺序表的位置互换,即实现数组的位置为(b1,b2,b3…bn)((a1,a2,a3…am))

算法思路图解

根据上图的实现步骤,核心就在于如何完成逆置
这里采用上一篇文章的逆置方式,下面是连接
数据结果代码题day01

核心代码如下:

//转置函数
//这里的from代表左节点,to代表右结点
void Reverse(int[] A,int from,int to){int temp;//开辟一个临时存储交换数值//为方便置换,采用中间位置进行分割,即(to-from+1)/2位置for(int i = 0;i<(to-from+1)/2;i++){temp = L.data[from+i];//交换操作L.data[from+i] = L.data[to-i];L.data[to-i] = temp;}
}

完整代码如下:

/**已知在一个一维数组A【m+n】中依次存放两个线性表,*(a1,a2,a3.....am)和(b1,b2,b3..bn),试着编写一个函数,*将数组中两个顺序表的位置互换,*即实现数组的位置为(b1,b2,b3..bn)((a1,a2,a3.....am))*/
//转置函数
//这里的from代表左节点,to代表右结点
void Reverse(int[] A,int from,int to){int temp;//开辟一个临时存储交换数值//为方便置换,采用中间位置进行分割,即(to-from+1)/2位置for(int i = 0;i<(to-from+1)/2;i++){temp = L.data[from+i];//交换操作L.data[from+i] = L.data[to-i];L.data[to-i] = temp;}
}
//核心函数
void Exchange(int[] A,int m,int n){Reverse(A,0,m-1);//左边转置Reverse(A,m,m+n-1);//右边转置Reverse(A,0,m+n-1);//全部转置
}

计算机数据结构代码题----Day02相关推荐

  1. 【23考研】计算机408数据结构代码题强化阶段划重点(王道书)

    视频链接:[23考研]10分钟带你整理408数据结构强化阶段代码题复习重点 本篇只适合考408的同学,请自主命题的同学自觉右上角×掉 因为王道书为了照顾自主命题的同学,所以很多算法也给出了代码实现,实 ...

  2. 【计算机考研数据结构代码题总结】链表

    1.在带头节点的单链表L中,删除所有值为X的结点,并释放其空间,假设值为X的节点不唯一,试编写算法实现. //单链表 //要放置三个指针,pre指向头结点(p结点的前驱),p指向头结点的下一个结点,q ...

  3. 【计算机考研数据结构代码题总结】栈和队列

    1.回文是指正读反读均相同的字符序列,如" "abba" " 和" "abdba" " 均是回文,但" &qu ...

  4. 23王道数据结构代码题全解(二)

    计划更新23王道数据结构所有课后代码习题的实现,虽然考试写的一般都是伪代码,但是强迫症的我还是全部实现了一遍,仓库在这里 代码全部是用 C++ 写的,都可以编译运行,包含暴力解和最优解. 持续更新,目 ...

  5. 23王道数据结构代码题全解(一)

    计划更新23王道数据结构所有课后代码习题的实现,虽然考试写的一般都是伪代码,但是强迫症的我还是全部实现了一遍,仓库在这里 代码全部是用 C++ 写的,都可以编译运行,包含暴力解和最优解. 持续更新,目 ...

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

    计划更新23王道数据结构所有课后代码习题的实现,虽然考试写的一般都是伪代码,但是强迫症的我还是全部实现了一遍,仓库在这里 代码全部是用 C++ 写的,都可以编译运行,包含暴力解和最优解. 持续更新,目 ...

  7. 大师兄手把手教你写考研数据结构代码题(50天代码整理合集)

    #include <stdio.h>#include <stdlib.h>//Day01 //在带头结点的单链表L中,删除所有值为x的结点,并释放其空间,假设值为x的结点不唯一 ...

  8. 天勤数据结构-代码题2

    已知一个带有表头节点的单链表,节点结构为:{data,next},假设该链表只给出了头指针head,在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点.查找成功返回该结 ...

  9. 数据结构代码题--头插法和尾插法的应用

    头插法建立单链表(一般用于链表的逆置)头插防断链 就是说用头插法时要给 p指针一个后继结点 // 单链表的定义 typedef struct LNode{ElemType data;struct LN ...

最新文章

  1. switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
  2. Java之于Kotlin对比(Android)
  3. Win32 API之Setlocale函数配置地域化信息函数
  4. windows下netstat的使用
  5. C++ 十进制转其他进制
  6. vbmsgbox引用变量_vba中MsgBox的参数及用法
  7. Python 第一篇:python简介和入门
  8. EF Core 数据变更自动审计设计
  9. Hystix熔断解决雪崩问题
  10. 一个C++程序员生产力,大概相当20个C程序员,200个java程序员?
  11. 版权文字:Power by DedeCms 如何去除?
  12. Javascript 汉字拼音排序
  13. 什么是https,和ssl什么关系,为什么用https
  14. thymeleaf使用总结
  15. 黑马程序员提供得教程
  16. 网件刷breed_网件R6220刷breed变砖的维修
  17. PS2汉化2 - 自制程序的运行与调试
  18. 电脑重装系统详细教程(以安装win10为例)
  19. win怎么在计算机里按日期搜索文件,通用win7系统搜索某时间段内的文件的方法...
  20. 《matlab数学建模方法与实践,数理统计及其在数学建模中的实践(使用MATLAB)

热门文章

  1. python画学校_未明学院:Python可视化库Matplotlib绘图入门详解
  2. 漫画:什么是 “小镇做题家” ?
  3. 利用Android studio开发Java程序
  4. U盘容量变小了怎么恢复教程
  5. 1016: 构建矩阵
  6. Spring系列学习之Spring Data Apache Geode数据访问
  7. 如何用SD NAND解决TF卡所遇到的问题?
  8. C++ 蓝桥杯 利用字母可以输出一些美丽的图形
  9. 基于模板匹配的0-9数字语音识别(matlab)
  10. Pinpoint--基础--01--介绍