Стек и операции с ним - проверка кода на корректность - C#
Формулировка задачи:
Необходимо реализовать стек на С#(считывание без извлечения элемента стека, считывание с извлечением элемента стека, запись элемента в стек, сравнение двух стеков)
Можете проверить на правильность и корректность?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication3{
class Stack{
private int[] elements;
private int size;
public Stack(){
this.elements = new int[0];
this.size = elements.Length;
}
public void push(int e){
if (this.size == elements.Length){
int[] newArray = new int[this.elements.Length + 1];
Array.Copy(this.elements, 0, newArray, 0, this.size);
this.elements = newArray;
this.elements[this.size++] = e;
}
}
public int pop(){
if (this.elements.Length == 0)
throw new Exception("Не существующий элемент массива");
this.size -= 1;
int el = elements[this.size];
int[] newArray = new int[this.size];
Array.Copy(this.elements, 0, newArray, 0, this.size);
this.elements = newArray;
return el;
}
public int getSize{
get{ return elements.Length; }
}
public bool isEmpty{
get { return this.size == 0; }
}
public int peek{
get{ return this.elements[this.size-1]; }
}
public override bool Equals(object obj){
Stack s = obj as Stack;
if(this.size == s.size){
for (int i = 0; i < this.size;i++ ){
if (this.elements[i] == s.elements[i]){
return true;
}
}
}else
return false;
throw new Exception("Ошибка при сравнении");
}
public override int GetHashCode(){
int hashCode=0;
const int constant = 31;
for (int i = 0; i < this.size;i++ ){
hashCode = constant * this.elements[i];
}
return hashCode;
}
}
}Решение задачи: «Стек и операции с ним - проверка кода на корректность»
textual
Листинг программы
public override int GetHashCode(){
const int constant = 31;
int hashCode=constant * curr;
for (int i = 0; i < curr;i++ ){
hashCode ^= constant * this.elements[i];
}
return hashCode;
}