写出每个题目问题的答案,按照实验内容和步骤和实验结果分好,需要结合扩充内容,要求要完成思考题
时间: 2024-10-12 11:06:06 浏览: 29
### 实验内容及答案
#### 任务一:
**使用向量容器**
1. **实现Vector类成员函数Count**:
```cpp
template <class T>
int Vector<T>::Count(const T& item)const {
int count = 0;
for (int i = 0; i < theSize; ++i) {
if (data[i] == item)
++count;
}
return count;
}
```
2. **输入并输出特定数值的数量**:
```cpp
#include "Vector.h"
int main(){
int arr[10] = {1, 2, 3, 9, 5, 6, 7, 8, 9, 0};
Vector<int> vect;
for (auto element : arr){
vect.Push_back(element);
}
std::cout << "Number of elements with value 9: " << vect.Count(9) << std::endl;
return 0;
}
```
#### 任务二:
**使用列表容器**
1. **实现List类成员函数RemoveMin**:
```cpp
template <class T>
T List<T>::RemoveMin(){
auto minElementIt = this->begin();
for(auto it = this->begin(); it != this->end(); ++it){
if (*it < *minElementIt)
minElementIt = it;
}
T minValue = *minElementIt;
Erase(minElementIt);
return minValue;
}
```
2. **输入数组并移除最小值**:
```cpp
#include "List.h"
int main(){
int arr[10] = {1, 2, 3, 9, 5, 6, 7, 8, 9, 0};
List<int> list;
for (auto element : arr){
list.Push_back(element);
}
list.RemoveMin();
for (auto elem : list)
std::cout << elem << ' ';
return 0;
}
```
#### 扩展内容:
**多项式加法**
对于多项式的处理,可以通过定义多项式节点来存储系数和指数,并利用链表来管理这些节点。当两个多项式相加时,遍历它们的所有节点,相同指数下的系数直接相加。如果结果为零,则不加入最终的结果链表或将其删除。
```cpp
struct PloyNode{
double coef; // 系数域
int exp; // 指数域
};
List<PloyNode> addPolynomials(List<PloyNode> polyA, List<PloyNode> polyB) {
List<PloyNode> resultPoly;
auto iterA = polyA.begin(), iterB = polyB.begin();
while (iterA != polyA.end() && iterB != polyB.end()) {
if (iterA->exp > iterB->exp) {
resultPoly.Push_back(*iterA++);
} else if (iterA->exp < iterB->exp) {
resultPoly.Push_back(*iterB++);
} else {
PloyNode nodeToAdd = {iterA->coef + iterB->coef, iterA->exp};
if (nodeToAdd.coef != 0)
resultPoly.Push_back(nodeToAdd);
++iterA; ++iterB;
}
}
// Append remaining nodes from either polynomial A or B.
while (iterA != polyA.end())
resultPoly.Push_back(*iterA++);
while (iterB != polyB.end())
resultPoly.Push_back(*iterB++);
return resultPoly;
}
```
### 思考题解答:
1. 若经常对线性表进行插入和删除操作,最好采用链式存储结构,因为随机访问时间较长,但添加和删除的时间复杂度较低。
2. 栈是一种先进后出(LIFO)的数据结构,只允许在一端执行入栈和出栈操作;而队列遵循先进先出(FIFO)原则,在一端插入元素,在另一端删除元素。这两种特殊类型的线性表限制了操作的灵活性,以便提高效率和简化实现逻辑。
阅读全文