创建一个带头结点的单链表
时间: 2023-10-19 10:05:39 浏览: 59
好的,下面是代码示例:
```
typedef struct Node {
int val;
struct Node* next;
} Node;
Node* createLinkedList(int* arr, int n) {
Node* head = (Node*) malloc(sizeof(Node));
head->val = -1; // 头结点不存储有效值
head->next = NULL;
Node* cur = head;
for (int i = 0; i < n; i++) {
Node* node = (Node*) malloc(sizeof(Node));
node->val = arr[i];
node->next = NULL;
cur->next = node;
cur = cur->next;
}
return head;
}
```
这段代码可以创建一个带头结点的单链表,并将传入的数组元素加入到链表中。
相关问题
建立两个带头结点单链表
好的,以下是建立两个带头结点的单链表的示例代码(使用C语言):
```c
#include <stdio.h>
#include <stdlib.h>
// 定义单链表结点结构体
typedef struct ListNode {
int val; // 节点的数据
struct ListNode* next; // 指向下一个节点的指针
} ListNode;
// 创建带头结点的单链表
ListNode* createList() {
ListNode* head = (ListNode*)malloc(sizeof(ListNode)); // 创建头结点
head->next = NULL; // 初始化为空链表
return head;
}
int main() {
ListNode* list1 = createList(); // 创建第一个链表
ListNode* list2 = createList(); // 创建第二个链表
// 在这里可以插入一些代码,向链表中添加节点
return 0;
}
```
在这个示例代码中,我们首先定义了一个 `ListNode` 结构体来表示单链表的节点,其中包含了一个整型数据 `val` 和指向下一个节点的指针 `next`。然后我们定义了一个 `createList` 函数来创建带头结点的单链表,该函数返回一个指向头结点的指针。
在 `main` 函数中,我们通过调用 `createList` 函数来创建两个带头结点的单链表 `list1` 和 `list2`,然后可以在之后的代码中向链表中添加节点。
c++创建一个带头结点的单链表
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node *next;
};
int main() {
struct Node *head = (struct Node*) malloc(sizeof(struct Node)); // 创建头结点
head->next = NULL; // 初始化头结点的指针域为空
int n, num;
printf("请输入链表长度: ");
scanf("%d", &n);
struct Node *p = head; // 创建指针变量p指向头结点,用于插入新的结点
for (int i = 0; i < n; i++) {
printf("请输入第%d个节点的值: ", i+1);
scanf("%d", &num);
struct Node *newNode = (struct Node*) malloc(sizeof(struct Node)); // 创建新结点
newNode->data = num;
newNode->next = NULL;
p->next = newNode; // 将新结点插入链表
p = p->next; // 将指针p指向新插入的结点
}
// 遍历链表并输出每个结点的值
p = head->next; // 将指针p重新指向第一个结点
printf("创建的单链表为: ");
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
return 0;
}