用new操作符替换malloc函数,void plus(datanode *a, datanode *b, datanode *c) // 求a、b两个头指针的单链表中的高精度整数的和 // 和存放于c为头指针的单链表中 {//************************************************ datanode *p = a->next, *q = b->next, *r; int carry = 0, sum; while (p != NULL || q != NULL){ r = (datanode *)malloc(sizeof(datanode)); sum = carry; if (p != NULL){ sum += p->digit; p = p->next; } if (q != NULL){ sum += q->digit; q = q->next; } r->digit = sum % 10; carry = sum / 10; c->next = r; c = r; } if (carry == 1){ r = (datanode *)malloc(sizeof(datanode)); r->digit = 1; r->next = NULL; c->next = r; } //================================================= }
时间: 2023-08-16 07:09:34 浏览: 99
C语言malloc函数用法
可以使用new操作符替换malloc函数,代码如下:
```c++
void plus(datanode *a, datanode *b, datanode *c) {
datanode *p = a->next, *q = b->next, *r;
int carry = 0, sum;
while (p != NULL || q != NULL) {
r = new datanode; // 使用new操作符分配内存
sum = carry;
if (p != NULL) {
sum += p->digit;
p = p->next;
}
if (q != NULL) {
sum += q->digit;
q = q->next;
}
r->digit = sum % 10;
carry = sum / 10;
c->next = r;
c = r;
}
if (carry == 1) {
r = new datanode; // 使用new操作符分配内存
r->digit = 1;
r->next = NULL;
c->next = r;
}
}
```
这样可以避免使用malloc函数时需要手动释放内存的问题。当使用new操作符分配内存时,内存会自动在程序结束时被释放。
阅读全文