建立一个不带表头节点的单链表,依次输入元素1, 2,3……10,删除元素1、5,最后依次显示当前表中的元素。
时间: 2024-09-22 19:09:38 浏览: 28
创建一个不带表头节点的单链表并插入元素的过程通常会涉及以下几个步骤:
1. 定义链表节点结构,它包含一个数据域和一个指向下一个节点的指针。
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
2. 创建一个函数用于添加元素到链表中,从最后一个节点开始插入。
```c
void insert(Node** head, int value) {
if (*head == NULL) {
*head = (Node*)malloc(sizeof(Node));
(*head)->data = value;
(*head)->next = NULL;
} else {
Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = (Node*)malloc(sizeof(Node));
temp->next->data = value;
temp->next->next = NULL;
}
}
```
3. 输入元素并删除特定元素。
```c
int main() {
Node* head = NULL;
// 插入元素
for (int i = 1; i <= 10; i++) {
insert(&head, i);
}
// 删除元素
if (head != NULL && head->data == 1) {
Node* temp = head;
head = head->next;
free(temp); // 释放已删除节点的内存
}
if (head != NULL && head->data == 5) {
Node* prev = head;
Node* current = head->next;
while (current != NULL && current->data != 5) {
prev = current;
current = current->next;
}
if (current != NULL) {
prev->next = current->next;
free(current); // 释放已删除节点的内存
}
}
// 显示链表中的剩余元素
Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
return 0;
}
```
在这个程序中,首先初始化一个空链表`head`,然后循环插入数字1到10。接着检查和删除指定的元素(1和5)。最后,遍历链表并打印出剩余的元素。