对顺序表的两个操作
来源:互联网 发布:医疗数据分析师 编辑:程序博客网 时间:2024/05/22 06:13
今天帮老师判数据结构作业,有两个顺序表的题目感觉很有意思,同时又感觉这两个题都很像,因此就写成代码试了一下,虽然不难,但是也很有启发。题目要求是删除一个非降序顺序表中所有的重复元素,并且使空间复杂度为O(1).另一个题目是删除顺序表中值的范围在[x,y]之间的所有数,这个顺序表可以是乱序的,但是也要求算法空间复杂度为O(1).代码如下:
/*本文档实现两个基本的操作:去除非降序顺序表中的重复的元素、根据给定的范围删除顺序表中的元素,空间复杂度为O(1)*/#include<iostream>#define arrsize 1000using namespace std;struct SqList{int data[arrsize];int element;SqList(){element=-1;}};void out(SqList s){for(int i=0;i<=s.element;i++){cout<<s.data[i]<<" ";}cout<<endl;}void remove(SqList *s) //去除非降序顺序表中的重复元素{if(s->element==-1)return ;int i=0,j;for(int j=1;j<=s->element;j++){if(s->data[j]!=s->data[i]){i++; s->data[i]=s->data[j];}}s->element=i;}void remove_val(SqList *s,int x,int y) // 删除数组中,值的范围在[x,y]中间的数。要求x<=y{if(s->element==-1) return ;int i=-1,j;for(int j=0;j<=s->element;j++){if(s->data[j]<x || s->data[j]>y){i++;s->data[i]=s->data[j];}}s->element=i;}int main(int argc, char const *argv[]){SqList s;int num[10]={3,3,4,5,9,9,9,10,15,15};//定义一个升序数组for(int i=0;i<10;i++){s.data[i]=num[i]; s.element++; //将num数组的值赋给s}out(s);//先输出s,结果为{3,3,4,5,9,9,9,10,15,15}remove(&s);out(s);//输出s,结果为{3,4,5,9,10,15}SqList sq;int num2[10]={15,13,4,5,9,8,9,10,7,15};//定义一个升序数组for(int i=0;i<10;i++){sq.data[i]=num2[i]; sq.element++; //将num数组的值赋给s}out(sq);remove_val(&sq,4,9);out(sq);return 0;}
是不是很像。。。
阅读全文
0 0
- 对顺序表的两个操作
- 数据结构(顺序表的两个操作)
- 对顺序表的一些操作
- 对顺序表的基本操作
- 区别顺序表的清空和销毁两个操作
- 线性表——对顺序表的操作
- 对顺序表的操作完整程序(1)
- 对顺序表的部分操作(2)
- 对两个日期之间的操作
- 对输入的两个整数按大小顺序输出。
- 对输入的两个整数按大小顺序输出。
- 顺序表的操作
- 顺序表的操作
- 顺序表的操作
- 顺序表的操作
- 顺序表的操作
- 顺序表的操作
- 顺序表的操作
- 函数
- Spring MVC访问静态页面,在servlet.xml中加了mvc:resources mapping 就会出现404错误
- 网络中进程间的通信
- Git Bash学习笔记
- Codeforces 875E-Delivery Club
- 对顺序表的两个操作
- Linux命令大全网址
- Netty4实战第十一章:WebSockets
- python 数字信号的滤波器设计 signal.buffer
- C#228课的主要内容
- datagrid下fitcolums设置没有铺满100%问题
- 直方图的均衡化
- 水仙花数
- 数据结构复习资料