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

来源:互联网 发布:软件恢复大师 编辑:程序博客网 时间:2024/06/10 23:23

该笔记记录《数据结构与算法》顺序表;

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

(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++)        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 &currentSize,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 &currentSize,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;}
原创粉丝点击