08-软件需求分析: 课堂练习(找水王)

遍历数组,每一个和下一个比较,若相同id 消除上1个

代码如下:

#include<iostream>
using namespace std;
#define MAXSIZE 100

typedef struct
{
    int *base;
    int *top;
    int stacksize;
}SqStack;

int InitStack(SqStack &S)
{
    S.base=new int[MAXSIZE];
    if(!S.base)
        exit(OVERFLOW);
    S.top=S.base;
    S.stacksize=MAXSIZE;
    return 0;
}


int main()
{
    int ID[MAXSIZE],k=0,n;
    cout<<"输入数组元素:"<<endl;
    for(int j=0;;j++)
    {    
        cin>>n;
        if(n==-1)
            break;
    
        ID[j]=n;
        k++;
    }
    int e;
    SqStack S;
    InitStack(S);
    k=k-1;
    for(int i=0;i<k;i++)
    {
        
        if(S.top==S.base)
        {
            *S.top++=ID[i];
        }
        int num=*(S.top-1);
        if(num!=ID[i+1]&&i<k-1)
        {
            e=*--S.top;
            i++;
        }
        else
        {
        *S.top++=ID[i+1];
        }
        if(i==k-2)
        {
            num=*(S.top-1);
            cout<<"出现最多次数的元素:"<<endl;
            cout<<num<<endl;
        }
    }
    return 0;
}
原文地址:https://www.cnblogs.com/wwd1505-1/p/6805378.html