您的位置:首页 > 其它

利用顺序表的操作,实现以下函数

2017-11-25 14:04 411 查看
该笔记记录《数据结构与算法》顺序表;

:利用顺序表的操作,实现以下函数;

(1)从顺序表中删除具有最小值的元素并由函数返回被删除元素的值,空出的位置由最后一个元素补充。

(2)从顺序表汇总删除具有给定值X的所有元素。

(3)从有序顺序表中删除其值在给定值s与t之间(s< t)的所有元素。

#include <iostream>
#include <stdlib.h>
using namespace std;
#define MAXSIZE 20
//初始化数组
void initArrayList(int arrayList[])
{
for(int i=0;i<MAXSIZE;i++)
arrayList[i]=rand()%15;
}
//打印数组
void showArray(int arrayList[],int currentSize)
{
for(int i=0;i<currentSize;i++)

4000
cout<<arrayList[i]<<" ";
cout<<endl;
}
//打擂法,找到顺序表最小值
int findMin(int arrayList[],int currentSize)
{
int min=arrayList[0];
for(int i=1;i<currentSize;i++)
{
if(min>arrayList[i])
min=arrayList[i];
}
return min;
}
//删除指定值函数
int deleteEle(int arrayList[],int ¤tSize,int deletedValue)
{
for(int i=0;i<currentSize;i++)
{
if(deletedValue==arrayList[i])
{
//边界处理,如果删除最后一位数
if(currentSize-1>i)
{
arrayList[i]=arrayList[currentSize-1];
currentSize--;
i--;
}
else
{
currentSize--;
}
}
}
return deletedValue;
}
//删除 s,t之间值函数
void deleteEle(int arrayList[],int ¤tSize,int s,int t)
{
for(int i=0;i<currentSize;i++)
{
if((s<arrayList[i])&&(arrayList[i]<t))
{
deleteEle(arrayList,currentSize,arrayList[i]);
i--;
}
}
}
int main()
{
//初始化
int arrayList[MAXSIZE];
int currentSize=MAXSIZE;
initArrayList(arrayList);
cout << "初始化顺序表为:" ;
showArray(arrayList,currentSize);
//删除最小值
int min=deleteEle(arrayList,currentSize,findMin(arrayList,currentSize));
cout<<"最小值为:"<<min<<endl;
cout<<"删除最小值之后: ";
showArray(arrayList,currentSize);
//删除指定值
int element;
cout<<"请输入要删除的值: ";
cin>>element;
deleteEle(arrayList,currentSize,element);
cout<<element<<"被删除之后顺序表为:";
showArray(arrayList,currentSize);
//删除s,t之间的值
cout<<"请输入s,t(s<t): ";
int s,t;
cin>>s>>t;
deleteEle(arrayList,currentSize,s,t);
cout<<"删除"<<s<<"~"<<t<<"之后的数组值为:";
showArray(arrayList,currentSize);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐