用c语言写一个用二级指针初始化的单链表
时间: 2024-05-15 15:18:55 浏览: 104
好的,我可以帮您回答这个问题。以下是用 C 语言写一个用二级指针初始化的单链表的代码:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node *next;
} Node;
void createList(Node **head, int *arr, int len) {
*head = NULL;
Node *tail = NULL;
int i;
for (i = 0; i < len; i++) {
Node *newNode = (Node *)malloc(sizeof(Node));
newNode->data = arr[i];
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
tail = newNode;
} else {
tail->next = newNode;
tail = newNode;
}
}
}
void printList(Node *head) {
Node *ptr = head;
while (ptr != NULL) {
printf("%d ", ptr->data);
ptr = ptr->next;
}
printf("\n");
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int len = sizeof(arr) / sizeof(arr[0]);
Node *head = NULL;
createList(&head, arr, len);
printf("The linked list is: ");
printList(head);
return 0;
}
```
在这里,我们使用了一个指向指针的指针来初始化单链表。具体来说,我们定义了一个 `createList` 函数,它接受一个二级指针 `head`、一个整数数组 `arr` 和一个整数 `len`,并使用 `arr` 中的元素初始化一个单链表。这里的 `head` 是一个指向指针的指针,这是因为我们需要修改头指针的值,以反映新链表的开头。在函数中,我们首先将 `head` 指向 `NULL`,然后遍历整个数组,为每个数创建一个新的节点,并将其添加到链表的末尾,最后返回指向修改后链表的新头指针的指针。
使用该方法,您可以用 C 语言创建单链表,并使用 `printList` 函数打印其内容。
阅读全文