c++int AveRevise_L(LinkList &L) {//计算所有图书的平均价格并修改价格 /**************begin************/ /**************end************/ }
时间: 2023-09-02 16:08:50 浏览: 42
这是一个计算链表中所有图书价格平均值并修改价格的函数,具体实现如下:
```c++
int AveRevise_L(LinkList &L) {
if (L == NULL) {
return 0;
}
int sum = 0, count = 0;
LNode *p = L->next;
while (p != NULL) {
sum += p->data.price;
count++;
p = p->next;
}
if (count == 0) {
return 0;
}
int ave = sum / count;
p = L->next;
while (p != NULL) {
p->data.price = ave;
p = p->next;
}
return ave;
}
```
函数首先判断链表是否为空,如果是则返回0。然后遍历链表,累加图书价格和计算图书数量,得到总价格和图书数量。如果图书数量为0,则返回0。计算平均价格,然后再次遍历链表,将每本图书的价格修改为平均价格。最后返回平均价格。
相关问题
nt AveRevise_L(LinkList &L) {//计算所有图书的平均价格并修改价格 /**************begin************/ /**************end************/ }
这段引用内容主要是关于链表的定义和使用方法。其中,LinkList是LNode结构体的指针类型别名,LNode结构体包含一个int类型的data和一个指向下一个结点的指针next。而LNode* L和LinkList &L都表示指向LNode结构体的指针变量L。其中,LNode* &L表示对指针变量L的引用,可以直接修改指针变量L的值。
而对于题目中的函数AveRevise_L(LinkList &L),它的作用是计算所有图书的平均价格并修改价格。具体实现方法可以分为以下几步:
1. 定义一个变量sum,用于记录所有图书价格的总和。
2. 定义一个变量count,用于记录图书的数量。
3. 遍历链表L,将每个结点的data值加入sum中,并将count加1。
4. 计算平均价格avg=sum/count。
5. 再次遍历链表L,将每个结点的data值修改为avg。
具体实现代码如下:
```
int AveRevise_L(LinkList &L) {
int sum = 0, count = 0;
LNode* p = L;
while (p != NULL) {
sum += p->data;
count++;
p = p->next;
}
int avg = sum / count;
p = L;
while (p != NULL) {
p->data = avg;
p = p->next;
}
return avg;
}
```
c++ 实现int Insert_L(LinkList &L) {//将新图书入库并输出 /**begin/ /**end/ }
好的,以下是 C++ 实现的代码:
```cpp
struct Book {
int id; // 图书编号
string name; // 图书名称
string author; // 作者
double price; // 价格
};
struct LNode {
Book data;
LNode *next;
};
typedef LNode *LinkList;
int Insert_L(LinkList &L) {
// 创建新节点
LNode *newNode = new LNode;
cout << "请输入图书编号:";
cin >> newNode->data.id;
cout << "请输入图书名称:";
cin >> newNode->data.name;
cout << "请输入图书作者:";
cin >> newNode->data.author;
cout << "请输入图书价格:";
cin >> newNode->data.price;
newNode->next = NULL;
// 将新节点插入链表尾部
if (L == NULL) {
L = newNode;
} else {
LNode *p = L;
while (p->next != NULL) {
p = p->next;
}
p->next = newNode;
}
// 输出新节点信息
cout << "新图书信息:" << endl;
cout << "编号:" << newNode->data.id << endl;
cout << "名称:" << newNode->data.name << endl;
cout << "作者:" << newNode->data.author << endl;
cout << "价格:" << newNode->data.price << endl;
return 1;
}
```
在这个函数中,我们首先创建一个 `Book` 结构体表示图书的信息,然后创建一个 `LNode` 结构体表示链表中的节点,包含了一个 `Book` 类型的数据和一个指向下一个节点的指针。函数的参数 `LinkList &L` 表示一个指向链表头节点的指针,因为我们要将新节点插入到链表中,所以需要修改链表头指针的值。
在函数中,我们首先输入新节点的信息,然后创建新节点并赋值。接着,我们要将新节点插入到链表尾部。如果链表为空,那么新节点就是链表的头节点;否则,我们需要遍历链表找到最后一个节点,然后将新节点插入到其后面。
最后,我们输出新节点的信息,表示新图书已经入库。函数返回值 1 表示插入成功。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)