
Patrick B. answered 03/21/21
Math and computer tutor/teacher
class MyList
{
protected int list[];
protected int count;
protected int tempArray[];
protected boolean error_flag;
public MyList()
{
list = new int[1];
count=0;
tempArray=null;
error_flag=false;
}
public int GetCount() { return(count); }
public boolean GetErrorFlag() { return(error_flag); }
public void ClearError() { error_flag=false; }
public void SetError() { error_flag=true; }
public void Push( int newIntNum)
{
ClearError();
if (count==0)
{
list[0] = newIntNum;
count=1;
//System.out.println(" First element is " + list[0]);
}
else
{
//System.out.println(" about to push int # " + (count+1));
tempArray = new int[count+1];
for (int iLoop=0; iLoop<count; iLoop++)
{
tempArray[iLoop]=list[iLoop];
}
tempArray[count++] = newIntNum;
list = tempArray;
tempArray=null;
//System.out.println(" Pushed : " + list[count-1] );
}
}
public int IndexerGetIndexAt(int iIndexPos)
{
int iReturn=-1;
ClearError();
if ((iIndexPos>=0) && (iReturn<count))
{
iReturn = list[iIndexPos];
}
else
{
SetError();
}
return(iReturn);
}
public int LinearSearchFind(int iTargetNum)
{
int iReturn=-1;
ClearError();
for (int iLoop=0; iLoop<count; iLoop++)
{
if (list[iLoop]==iTargetNum)
{
iReturn = iLoop;
break;
}
}
return(iReturn);
}
public int Pop( int iIndexPos)
{
int iReturn=-1;
ClearError();
if ((iIndexPos>=0) && (iReturn<count))
{
tempArray = new int[count-1];
for (int iLoop=0; iLoop<iIndexPos; iLoop++)
{
tempArray[iLoop] = list[iLoop];
}
for (int iLoop=iIndexPos+1; iLoop<count; iLoop++)
{
tempArray[iLoop-1] = list[iLoop];
}
list = tempArray;
tempArray=null;
count--;
}
else
{
SetError();
}
return(iReturn);
}
void DumpList(String strMsg)
{
if (strMsg!=null)
{
System.out.println("*********************************************************");
System.out.println(strMsg);
}
System.out.println("**********************************************************");
int N = count;
//System.out.println(N);
for (int iLoop=0; iLoop<N; iLoop++)
{
System.out.println(list[iLoop]);
}
}
public MyList( int A[])
{
int N = A.length;
list = new int[N];
for (int iLoop=0; iLoop<N; iLoop++)
{
// System.out.println(" array constructor: pushing " + A[iLoop]);
this.Push(A[iLoop]);
}
}
}
import java.util.Random;
class ListMain
{
MyList ListEvens( MyList list)
{
int N = list.GetCount();
MyList evenListReturn = new MyList();
for (int iLoop=0; iLoop<N; iLoop++)
{
int curIntNum = list.IndexerGetIndexAt(iLoop);
if ((curIntNum%2)==0)
{
evenListReturn.Push(curIntNum);
}
}
return(evenListReturn);
}
public static void main(String args[])
{
ListMain listMain = new ListMain();
int intNumSet1[] = {1,2,5,3,8};
int intNumSet2[] = {101,120,25,91,87};
int intNumSet3[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
int randomIntNums[] = new int[10];
MyList myList = new MyList(intNumSet1);
MyList listEvens = listMain.ListEvens(myList);
listEvens.DumpList("evens from num set #1 ");
myList = new MyList(intNumSet2);
listEvens = listMain.ListEvens(myList);
listEvens.DumpList("evens from num set #2 ");
myList = new MyList(intNumSet3);
listEvens = listMain.ListEvens(myList);
listEvens.DumpList("evens from num set #3 ");
Random myRandom = new Random();
for (int iLoop=0; iLoop<10; iLoop++)
{
int iRandomIntNum = myRandom.nextInt() %100;
if (iRandomIntNum < 0) { iRandomIntNum *= -1; }
randomIntNums[iLoop] = iRandomIntNum;
}
myList = new MyList(randomIntNums);
listEvens = listMain.ListEvens(myList);
listEvens.DumpList(" random ");
myList = new MyList(intNumSet1);
for (int iLoop=1; iLoop<11; iLoop++)
{
int iIndexReturn = myList.LinearSearchFind(iLoop);
if (iIndexReturn>=0)
{
System.out.println(" Int # " + myList.IndexerGetIndexAt(iIndexReturn) + " found at index " + iIndexReturn);
}
else
{
System.out.println(" Int # " + iLoop + " not found ");
}
}
}
}