c++int AveRevise_L(LinkList &L) {//计算所有图书的平均价格并修改价格 /**************begin************/ /**************end************/ }
时间: 2023-09-02 15:08:50 浏览: 88
这是一个计算链表中所有图书价格平均值并修改价格的函数,具体实现如下:
```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。计算平均价格,然后再次遍历链表,将每本图书的价格修改为平均价格。最后返回平均价格。
相关问题
void Reverse_L(LinkList &L) {//逆置带头结点的单链表L /**************begin************/ /**************end************/ }
可以使用三个指针pre、p和q,将p所指的节点插入到pre和q之间,然后指针p、pre和q分别向后移动,重复这个过程直到链表逆置完成。代码如下:
```
void Reverse_L(LinkList &L) {
if (L == NULL || L->next == NULL) {
return;
}
ListNode *pre = L->next;
ListNode *p = pre->next;
while (p != NULL) {
ListNode *q = p->next;
p->next = pre;
pre = p;
p = q;
}
L->next->next = NULL;
L->next = pre;
}
```
void MergeList(LinkList &LA,LinkList &LB) { //求基于链表的两个递增有序序列的合并 /**************begin************/ /**************end************/ }
这是一个链表合并的函数,其中LA和LB分别代表两个递增有序序列的头指针。下面是该函数的实现:
void MergeList(LinkList &LA, LinkList &LB) {
LinkList p = LA->next, q = LB->next, r = LA;
while (p && q) {
if (p->data <= q->data) {
r->next = p;
p = p->next;
} else {
r->next = q;
q = q->next;
}
r = r->next;
}
r->next = p ? p : q;
free(LB);
}
该函数的实现思路是:定义三个指针p、q、r,其中p和q分别指向LA和LB的第一个元素,r指向LA的头结点。然后比较p和q所指向的元素大小,将较小的元素插入到r所指向的链表中,并将r指向新插入的元素。最后将剩余的元素直接插入到r所指向的链表中即可。
阅读全文