没有合适的资源?快使用搜索试试~ 我知道了~
算法总结1
需积分: 0 0 下载量 131 浏览量
2022-08-03
19:49:01
上传
评论
收藏 280KB PDF 举报
温馨提示
试读
24页
算法总结1
资源详情
资源评论
资源推荐
19.1
//顺序表的定义
typedef struct SqList
{
ElemType data[MaxSize];
int Length;
}
//从顺序表中删除最小的元素(假设唯一),并返回被删除元素的值。空出的位置由最后一个元素来填补
bool func(SqList &list,ElemeType &value)
{
if(n<=0)
{
printf("顺序表为空\n");
return false;
}
int minIndex=0;
for(int i=1;i<;i++)
{
if(list.data[i]<list.data[minIndex])
{
minIndex=i;
}
}
value=list.data[minIndex];
list.data[minIndex]=list.data[n-1];
list.Length=n-1;
return true;
}
//设计一个算法,将顺序表L中的所有的元素逆置
void ReverseLinkList(SqList &list)
{
ElemType temp;
for(int i=0;i<list.Length/2;i++)
{
temp=list.data[i];
list.data[i]=list.data[list.Length-i-1];
list.data[list.Length-i]=temp;
}
}
/*
对长度为n的顺序表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为x的元素
*/
//用k记录顺序表L中不等于x的元素个数,遍扫描L遍统计k,将不等于x的元素向前移动k个位置
void delete_same_x(SqList &list,ElemType x)
{
int k=0;//记录值不等于x的元素个数
for(int i=0;i<list.Length;i++)
{
if(list.data[i]!=x)
{
list.data[k]=l.data[i];
k++;//不等于x的个数增加1
}
}
}
//解决方法二:用k记录顺序表中等于x的元素个数,并将不等于x的元素前移k个位置
void delete_same_x_1(SqList &list,ElemType x)
{
int k=0;//用于记录值等于x的元素个数
while(i<list.Length)
{
if(list.data[i]==x)
{
k++;
}else
{
list.data[i-k]=list.data[i];//当前元素迁移k个位置
}
i++;
}
list.Length=list.Length-k;//修改顺序表的长度
}
//从有序表删除值在给定值s与t之间的所有的元素(包含s和t),如果s和t的值不和或顺序表为空,则显示信息并退出
bool func(SqlList &l,ElemType s,ElemType t)
{
int i=0;//指向第一个大于s的元素下表
int j=0;//指向第一个大于t的元素下表
while(i<l.Length && l.data[i]<s)
{
i++;
}
if(i>=l.Length)
{
return false;
}
while(j<l.Length && l.data[j]<=t)
{
j++;
}
//把l和l后面的元素向前移动
for(l;l<l.Length;l++,j++)
{
l.data[j]=l.data[l];
}
l.Length=j;
return false;
}
//从有序顺序表中删除所有值重复的元素,使表中的元素值均不相同
//因为是有序表,所以表中相同值的元素都是连续出现的,可以利用这个特性来写
void func(SqList &l)
{
if(l.LEngth==0)
{
return false;
}
int i,j;//i存储第一个不相同的元素,j为工作指针
for(i=0,j=1;j<l.Length;j++)
{
if(l.data[i]!=l.data[j])//查找下一个与上一个不同的元素
{
l.data[++i]=l.data[j];//找到后将元素向前移
}
}
l.Length=i+1;
return true;
}
//将两个有序表合并为一个新的有序表,并由函数返回顺序表结果
//首先,按顺序不断取下两个顺序表表头比较小的结点存入新的顺序表中,然后看哪个表还有剩余,将剩余的部分加到新
bool Merge(SqList a,SqlList b,SqlList &c)
{
if(a.Length+b.Length>c.Length)
{
return false;
}
int i=0,j=0,k=0;
while(i<a.Length && j<b.Length)
{
if(a.data[i]<=b.data[j])
{
c.data[k++]=a.data[i++];
}else{
c.data[k++]=b.data[j++];
}
while(i<a.Length)
{
c.data[k++]=a.data[i];
}
while(j<b.Length;j++)
{
c.data[k++]=b.data[j++];
}
剩余23页未读,继续阅读
我只匆匆而过
- 粉丝: 16
- 资源: 317
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 智能主板原理图,文件后缀是SCHDOC
- 计算机网络期末复习是一个综合性的过程,需要对网络的基础理论、协议、体系结构以及应用等有深入的了解 以下是一些建议的复习内容和方法
- Playwright+Python自动化测试
- 现成版动图爱心exe文件直接用window打开即可展现
- 零基础DSP实战TMS320F28035:第十节,DSP之CLA内核应用实战.zip
- 789654645645
- 当你说到HTML(HyperText Markup Language),它是用于创建网页内容的标准标记语言 HTML通过标签(t
- 基于zigbee和stm32的智能家居系统,上位机使用Qt编写,实现了基本的监控 主要包括监控室内温度、湿度、烟雾浓度等
- 以下是一个简单的HTML5和CSS3代码示例,用于在网页上展示一个爱心形状,并搭配一些文本作为表白使用 这个代码不依赖于Java
- 079版ijl15.dll 源码.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0