使用C语言建立一个不带表头结点的单链表,依次输入元素1,2,3,4,5,6,7,8,9,10,删除元素1,5,最后依次显示当前表中的元素
时间: 2024-09-21 21:12:09 浏览: 35
在C语言中,你可以通过定义结构体表示链表节点,然后创建一个函数来插入和删除元素。这里是一个简单的示例:
首先,我们定义链表节点结构体:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
接下来,我们需要一个函数来插入元素到链表尾部:
```c
void insert(Node** head, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (!newNode) {
printf("Memory allocation failed.\n");
return;
}
newNode->data = value;
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
} else {
Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
}
```
然后,我们编写一个函数删除指定值的节点:
```c
void deleteNode(Node** head, int value) {
if (*head == NULL) {
return;
}
if ((*head)->data == value) {
Node* temp = *head;
*head = (*head)->next;
free(temp);
return;
}
Node* temp = *head;
while (temp->next != NULL && temp->next->data != value) {
temp = temp->next;
}
if (temp->next != NULL) {
Node* toDelete = temp->next;
temp->next = temp->next->next;
free(toDelete);
}
}
```
现在,我们可以按照您的描述操作这个链表:
```c
int main() {
Node* head = NULL;
// 插入元素
for (int i = 1; i <= 10; ++i) {
insert(&head, i);
}
// 删除元素
deleteNode(&head, 1); // 删除1
deleteNode(&head, 5); // 删除5
// 显示链表中的元素
Node* current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
return 0;
}
```
运行上述程序后,你会看到删除元素1和5后的链表结果。