一次性定义两个带头结点的单链表的代码,用c语言
时间: 2024-11-13 12:22:16 浏览: 5
链表-使用C语言实现带头结点的单链表.zip
在C语言中,我们可以创建一个结构体表示链表节点,并分别定义两个链表。这里是一个简单的例子,包括了链表的创建、头节点的初始化以及基本的插入操作:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 创建一个新的链表节点并返回指针
Node* createNode(int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (!newNode) {
printf("Memory allocation failed.\n");
return NULL;
}
newNode->data = value;
newNode->next = NULL;
return newNode;
}
// 插入节点到链表头部
void insertAtHead(Node** headRef, int value) {
Node* newNode = createNode(value);
if (newNode != NULL) {
newNode->next = *headRef; // 将新节点链接到当前头节点之后
*headRef = newNode; // 更新头节点指向新节点
}
}
// 测试示例
int main() {
Node* list1 = NULL;
insertAtHead(&list1, 5); // 初始化第一个链表,值为5
Node* list2 = NULL;
insertAtHead(&list2, 10); // 初始化第二个链表,值为10
// 打印链表内容
Node* temp1 = list1;
while (temp1 != NULL) {
printf("%d -> ", temp1->data);
temp1 = temp1->next;
}
printf("NULL\n");
temp1 = list2;
while (temp1 != NULL) {
printf("%d -> ", temp1->data);
temp1 = temp1->next;
}
printf("NULL\n");
return 0;
}
```
在这个代码中,我们首先定义了一个`Node`结构体,然后创建了两个链表`list1`和`list2`。每个链表的头部都被初始化为空。`insertAtHead`函数用于在链表头部添加新的节点。
阅读全文