写一个用c语言编写的带头结点的单链表
时间: 2024-09-28 13:11:26 浏览: 38
在C语言中,创建一个带头结点的单链表通常包含以下几个步骤:
首先,我们需要定义链表节点结构体,它包含了数据域(data)和指向下一个节点的指针(next):
```c
typedef struct ListNode {
int data; // 数据域
struct ListNode* next; // 指向下一个节点的指针
} ListNode;
```
然后,我们可以创建链表的头结点,并初始化它:
```c
ListNode* head = NULL; // 初始化头结点为NULL
```
接下来,我们定义一些基本操作,比如插入节点、删除节点和打印链表等:
1. 插入节点到链表头部:
```c
void insertAtBeginning(ListNode** head, int value) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
if (!newNode) { // 防止内存分配失败
printf("Memory allocation failed.\n");
return;
}
newNode->data = value;
newNode->next = *head;
*head = newNode;
}
```
2. 删除指定值的节点:
```c
void deleteNode(ListNode** head, int value) {
ListNode* temp = *head, *prev = NULL;
if (temp != NULL && temp->data == value) {
*head = temp->next;
free(temp);
return;
}
while (temp != NULL && temp->data != value) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) return; // 节点未找到
prev->next = temp->next;
free(temp);
}
```
3. 打印链表(仅遍历头结点后的节点):
```c
void printList(ListNode* node) {
while (node != NULL) {
printf("%d -> ", node->data);
node = node->next;
}
printf("NULL\n");
}
```
阅读全文