Skip to content

Commit 9a63d9c

Browse files
committed
file name change and updated 4_1
1 parent 1ab177e commit 9a63d9c

5 files changed

+319
-251
lines changed

4_1_find_modes_variable_list.cpp

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,15 @@ using std::endl;
1212
void append(int* &arr, int num, int arrSize);
1313
int * findModes(int arr[], const int ARR_SIZE);
1414
void printModes(int modesList[]);
15+
void resizeArray(int* &arr, int arrSize);
1516

1617
int main()
1718
{
1819
int num = 0;
1920
int arraySize = 1;
2021

2122

22-
int* numList = new int[1];
23+
int* numList = new int[D_MAX_SIZE];
2324

2425
cout << "This program finds mode of a list of integers.\n";
2526
cout << "Type in numbers to and press enter to fill the list, finish by entering -1.\n";
@@ -34,14 +35,19 @@ int main()
3435

3536

3637

38+
39+
3740
while (num != -1 && arraySize < D_MAX_SIZE)
3841
{
39-
append(numList, num, arraySize);
40-
arraySize++;
42+
numList[arraySize++] = num;
4143
cin >> num;
4244
cin.ignore();
4345
}
4446

47+
resizeArray(numList, arraySize);
48+
49+
50+
4551
cout << "\nThe numbers in the list are:\n[";
4652

4753
for (int i = 0; i < arraySize; i++)
@@ -64,6 +70,18 @@ int main()
6470
return 0;
6571
}
6672

73+
void resizeArray(int* &arr, int arrSize)
74+
{
75+
int* newArr = new int[arrSize];
76+
77+
for (int i = 0; i < arrSize; i++)
78+
{
79+
newArr[i] = arr[i];
80+
}
81+
delete[] arr;
82+
arr = newArr;
83+
}
84+
6785
void append(int* &arr, int num, int arrSize)
6886
{
6987

4_9-10_integer_linked_list.cpp

Lines changed: 110 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -13,98 +13,157 @@ struct listNode {
1313
typedef listNode * intLinkedList;
1414

1515
void printInteger(intLinkedList integer);
16-
intLinkedList intToList(int num);
16+
void addDigit(intLinkedList& integer, char charDigit);
1717
intLinkedList sumIntLists(intLinkedList integer1, intLinkedList integer2);
1818
void removeLinkedList(intLinkedList &head);
1919

2020
int main()
2121
{
22-
int num1 = 78;
23-
int num2 = 14;
24-
intLinkedList integer1 = intToList(num1);
25-
intLinkedList integer2 = intToList(num2);
26-
intLinkedList sum = sumIntLists(integer1, integer2);
22+
char charDigit = 0;
23+
intLinkedList integer1 = nullptr;
2724

28-
cout << "\nInteger one: ";
25+
cout << "Type in a number:\n";
26+
charDigit = cin.get();
27+
28+
while(charDigit != 10)
29+
{
30+
addDigit(integer1, charDigit);
31+
charDigit = cin.get();
32+
}
33+
cout << "\nThe number is:\n";
2934
printInteger(integer1);
30-
cout << "\nInteger two: ";
35+
36+
37+
38+
intLinkedList integer2 = nullptr;
39+
charDigit = 0;
40+
cout << "\nType in another number:\n";
41+
42+
charDigit = cin.get();
43+
while(charDigit != 10)
44+
{
45+
addDigit(integer2, charDigit);
46+
charDigit = cin.get();
47+
}
48+
49+
cout << "\nThe number is:\n";
3150
printInteger(integer2);
32-
cout << "\nTheir sum is: ";
33-
printInteger(sum);
51+
52+
intLinkedList sumInteger = sumIntLists(integer1, integer2);
53+
54+
cout << "\nThe sum of the numbers is:\n";
55+
printInteger(sumInteger);
3456

3557
removeLinkedList(integer1);
3658
removeLinkedList(integer2);
37-
removeLinkedList(sum);
59+
removeLinkedList(sumInteger);
3860

3961
cin.get();
4062
return 0;
4163

4264
}
4365

44-
// Exercise 4.9
45-
intLinkedList intToList(int num)
66+
67+
void addDigit(intLinkedList& integer, char charDigit)
4668
{
47-
if (num < 0)
69+
70+
if (charDigit < '0' || charDigit > '9')
4871
{
49-
num = 0;
72+
cout << "Wrong character" << endl;
73+
return;
5074
}
75+
int digit = charDigit - '0';
5176

52-
intLinkedList head = nullptr;
77+
listNode * newNode = new listNode;
78+
newNode->num = digit;
79+
newNode->next = integer;
80+
integer = newNode;
81+
}
5382

54-
do {
55-
listNode * newNode = new listNode;
56-
newNode->num = num % 10;
57-
num /= 10;
58-
newNode->next = head;
59-
head = newNode;
60-
} while (num);
6183

62-
return head;
84+
void printInteger(intLinkedList integer)
85+
{
86+
listNode * loopPtr = integer;
87+
if (loopPtr != nullptr)
88+
{
89+
printInteger(loopPtr->next);
90+
cout << loopPtr->num;
91+
}
6392
}
6493

6594

6695
// Exercise 4.10
6796
intLinkedList sumIntLists(intLinkedList integer1, intLinkedList integer2)
6897
{
69-
int num1 = 0;
70-
int num2 = 0;
71-
int sum = 0;
98+
intLinkedList head;
7299

100+
int digit1 = 0;
101+
int digit2 = 0;
102+
int sumDigit = 0;
73103

74-
listNode * loopPtr = integer1;
75-
while (loopPtr != nullptr)
76-
{
77-
num1 *= 10;
78-
num1 += loopPtr->num;
79-
loopPtr = loopPtr->next;
80-
}
81104

82-
loopPtr = integer2;
83-
while (loopPtr != nullptr)
84-
{
85-
num2 *= 10;
86-
num2 += loopPtr->num;
87-
loopPtr = loopPtr->next;
88-
}
105+
int extraVal = 0;
89106

90-
sum = num1 + num2;
107+
listNode * loopPtr1 = integer1;
108+
listNode * loopPtr2 = integer2;
91109

92-
return intToList(sum);
93-
}
110+
listNode * loopPtrSum = new listNode;
111+
head = loopPtrSum;
94112

95113

96-
void printInteger(intLinkedList integer)
97-
{
98-
listNode * loopPtr = integer;
99-
while (loopPtr != nullptr)
114+
while (loopPtr1 != nullptr || loopPtr2 != nullptr)
100115
{
101-
cout << loopPtr->num;
102-
loopPtr = loopPtr->next;
116+
if (loopPtr1 != nullptr)
117+
{
118+
digit1 = loopPtr1->num;
119+
loopPtr1 = loopPtr1->next;
120+
}
121+
122+
if (loopPtr2 != nullptr)
123+
{
124+
digit2 = loopPtr2->num;
125+
loopPtr2 = loopPtr2->next;
126+
}
127+
128+
sumDigit = digit1 + digit2 + extraVal;
129+
if (sumDigit >= 10)
130+
{
131+
extraVal = 1;
132+
sumDigit = sumDigit - 10;
133+
}
134+
else
135+
{
136+
extraVal = 0;
137+
}
138+
139+
loopPtrSum->num = sumDigit;
140+
141+
digit1 = digit2 = 0;
142+
143+
// Check if next digit exists
144+
if (loopPtr1 != nullptr || loopPtr2 != nullptr || extraVal)
145+
{
146+
loopPtrSum->next = new listNode;
147+
}
148+
else
149+
{
150+
loopPtrSum->next = nullptr;
151+
}
152+
loopPtrSum = loopPtrSum->next;
103153
}
154+
155+
if (extraVal)
156+
{
157+
loopPtrSum->num = 1;
158+
loopPtrSum->next = nullptr;
159+
}
160+
return head;
104161
}
105162

163+
106164
void removeLinkedList(intLinkedList &head)
107165
{
166+
108167
listNode * loopPtr = head;
109168
listNode * deleteNode;
110169

@@ -120,3 +179,4 @@ void removeLinkedList(intLinkedList &head)
120179

121180

122181

182+

0 commit comments

Comments
 (0)