c++里面的void Initlist(linklist *&L)的*&在c语言里面应该怎么用
时间: 2024-02-13 07:06:19 浏览: 166
在C语言中,可以使用指针来模拟C++中的引用参数。因此,你可以将 `void Initlist(linklist *&L)` 转换为 `void Initlist(linklist **L)`,并在函数内部使用二级指针来操作链表。例如:
```c
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
void Initlist(ListNode **L) {
*L = NULL; // 初始化链表为空
}
void Insert(ListNode **L, int val) {
ListNode *newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->val = val;
newNode->next = *L;
*L = newNode;
}
int main() {
ListNode *L;
Initlist(&L);
Insert(&L, 1);
Insert(&L, 2);
Insert(&L, 3);
// ...
return 0;
}
```
在上面的代码中,`Initlist` 函数使用二级指针 `ListNode **L` 作为参数,通过修改指针的指向来初始化链表。在 `main` 函数中,我们使用 `&L` 来传递链表指针的地址给 `Initlist` 函数。这样,当我们在 `Initlist` 函数中修改 `*L` 的值时,实际上是在修改 `main` 函数中的 `L` 指针所指向的地址的值。
阅读全文