c语言初始化一个带头结点的单链表L,插入l,i,s,t, 输出链表,删除l,并输入链表,在头节点后插入L,并输出链表。
时间: 2024-10-27 14:05:52 浏览: 27
在C语言中,你可以通过以下几个步骤来创建、操作和显示一个带头结点的单链表:
1. **创建链表**:
```c
typedef struct ListNode {
int data; // 数据域
struct ListNode* next; // 指向下一个节点的指针
}ListNode;
// 初始化链表
ListNode* createList() {
ListNode* head = (ListNode*)malloc(sizeof(ListNode));
if (!head) {
printf("Memory allocation failed.\n");
return NULL;
}
head->data = 0; // 首先设置头结点的数据为0,next指针设为NULL
head->next = NULL;
return head;
}
```
2. **插入元素**:
```c
void insertNode(ListNode* head, int value) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
if (!newNode) {
printf("Memory allocation failed for new node.\n");
return;
}
newNode->data = value;
newNode->next = head->next;
head->next = newNode;
}
```
3. **输出链表**:
```c
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
```
4. **删除链表元素**(这里以删除第一个节点为例):
```c
void deleteNode(ListNode* *head_ref) {
if (*head_ref == NULL)
return;
ListNode* temp = *head_ref;
*head_ref = temp->next;
free(temp); // 释放内存
}
// 删除头节点后的内容
void deleteHeadAndInsertAfter(ListNode* head, int value) {
deleteNode(&head);
insertNode(head, value);
}
```
5. **在头节点后插入元素**:
```c
void insertAfterHead(ListNode* head, int value) {
insertNode(head, value);
head->next->prev = head; // 更新新节点的前驱指针,使其指向头节点
}
```
注意:上述示例仅展示了基本操作,实际应用中可能会有错误处理和其他细节。同时,删除操作要小心处理空链表的情况。
阅读全文