使用c语言 用链表方式存储1到10代码 如果想删除第五个元素应该怎么操作
时间: 2024-09-10 07:03:14 浏览: 43
在C语言中,使用链表存储1到10的元素,首先需要定义链表的节点结构体以及链表的基本操作函数。以下是一个简单的示例,展示如何定义节点结构体、初始化链表、插入元素以及删除第五个元素的步骤:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点的结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 创建一个新节点
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode == NULL) {
exit(-1); // 分配内存失败,退出程序
}
newNode->data = data;
newNode->next = NULL;
return newNode;
}
// 在链表头部插入元素
void insertAtHead(Node** head, int data) {
Node* newNode = createNode(data);
newNode->next = *head;
*head = newNode;
}
// 打印链表
void printList(Node* head) {
Node* current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
// 删除链表的第五个元素
void deleteFifthElement(Node** head) {
Node* current = *head;
Node* prev = NULL;
int index = 1;
// 遍历链表直到第五个元素
while (current != NULL && index < 5) {
prev = current;
current = current->next;
index++;
}
// 如果链表长度小于5,不进行删除操作
if (current == NULL) {
printf("链表长度不足,无法删除第五个元素。\n");
return;
}
// 删除第五个元素
prev->next = current->next;
// 释放被删除节点的内存
free(current);
}
int main() {
Node* head = NULL;
// 依次插入1到10的元素
for (int i = 1; i <= 10; i++) {
insertAtHead(&head, i);
}
// 打印原始链表
printf("原始链表: ");
printList(head);
// 删除第五个元素
deleteFifthElement(&head);
// 打印删除元素后的链表
printf("删除第五个元素后的链表: ");
printList(head);
// 释放链表内存
Node* temp;
while (head != NULL) {
temp = head;
head = head->next;
free(temp);
}
return 0;
}
```
这段代码首先定义了一个链表节点的结构体`Node`,包含了数据域`data`和指针域`next`。然后定义了创建新节点的`createNode`函数,以及在链表头部插入节点的`insertAtHead`函数。`printList`函数用于打印链表,`deleteFifthElement`函数实现了删除链表第五个元素的功能。最后在`main`函数中,我们创建了一个包含1到10的链表,并展示了删除第五个元素前后链表的状态。
阅读全文