C++ Vito’s 求奇数的乘积

#include <iostream>

using namespace std;

#define eleType int

struct SequentialList {

eleType* elements;

int size;

int capacity;

};

void InitialList(SequentialList* list, int capacity) {

list->elements = new eleType[capacity];

list->size = 0;

list->capacity = capacity;

}

void DestroyList(SequentialList* list) {

delete[] list->elements;

}

bool IsEmpty(SequentialList* list) {

return list->size == 0;

}

int Size(SequentialList* list) {

return list->size;

}

void InsertElement(SequentialList* list, int index, eleType element) {

if (index <0 || index > list->size) {

throw std::invalid_argument(“invalid index”);

}

if (list->size == list->capacity) {

int Newcapacity = list->capacity * 2;

eleType* NewList = new eleType[Newcapacity];

for (int i = 0; i < list->size; i++) {

NewList[i] = list->elements[i];

}

delete[] list->elements;

list->elements = NewList;

list->capacity = Newcapacity;

}

for (int i = list->size; i > index; i–) {

list->elements[i] = list->elements[i – 1];

}

list->elements[index] = element;

list->size++;

}

void DeleteElement(SequentialList* list, int index) {

if (index < 0 || index >= list->size) {

throw std::invalid_argument(“invalid index”);

}

for (int i = index; i < list->size – 1; i++) {

list->elements[i] = list->elements[i + 1];

}

list->size–;

}

eleType FindIndexOfElement(SequentialList* list, eleType element) {

for (int i = 0; i < list->size; i++) {

if (element == list->elements[i]) {

return i;

}

}

return -1;

}

int GetElement(SequentialList* list, int index) {

if (index < 0 || index >= list->size) {

throw std::invalid_argument(“invalid index”);

}

return list->elements[index];

}

void UpdateElement(SequentialList* list, int index, eleType element) {

if (index < 0 || index >= list->size) {

throw std::invalid_argument(“invalid index”);

}

list->elements[index] = element;

}

int main(){

int n;

SequentialList VitoList;

while (cin >> n) {

InitialList(&VitoList, 1);

for (int i = 0; i < n; i++) {

int x;

cin >> x;

InsertElement(&VitoList, i, x);

}

int prod = 1;

for (int i = 0; i < VitoList.size; ++i) {

int value = GetElement(&VitoList, i);

if(value % 2 == 1){

prod = value * prod;

}

}

cout << prod <<endl;

DestroyList(&VitoList);

}

return 0;

}