//单链表元素求和,并将累加和添加到单链表尾部 //如果操作成功,返回OK,否则返回ERROR int AppendSumToList(LinkList* L) { int sum=0; LinkList r = *L; while (r!= NULL) { sum = sum + (*L)->data; r = r->next; } LinkList p = (LinkList)malloc(sizeof(LNode)); p->data = sum; p->next = NULL; r->next = p; r = p; return OK; }这个代码是否有错
时间: 2024-02-04 17:03:46 浏览: 92
LinkList.zip_数据结构_C/C++_
这个代码有错,因为在执行完while循环后,r指向的是链表的最后一个节点,而不是空节点。因此,在创建新节点p并将其添加到链表尾部时,需要将r指向新节点p,才能保证链表尾部正确。
以下是修改后的代码:
```
// 单链表元素求和,并将累加和添加到单链表尾部
// 如果操作成功,返回OK,否则返回ERROR
int AppendSumToList(LinkList* L) {
int sum = 0;
LinkList r = *L;
while (r != NULL) {
sum = sum + r->data;
r = r->next;
}
LinkList p = (LinkList)malloc(sizeof(LNode));
p->data = sum;
p->next = NULL;
if (*L == NULL) {
*L = p;
} else {
r->next = p;
}
return OK;
}
```
修改后的代码中,如果链表为空,则将新节点p作为链表的头节点;否则将新节点p添加到链表尾部。
阅读全文