c语言删除单链表中第i个元素,并输出删除后的单链表中各元素值
时间: 2024-05-04 17:21:32 浏览: 90
以下是C语言实现单链表删除第i个元素的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义单链表结构体
typedef struct Node {
int data;
struct Node *next;
} Node;
// 初始化单链表
void initList(Node **head) {
*head = NULL;
}
// 在单链表尾部插入元素
void append(Node **head, int data) {
Node *newNode = (Node *)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
} else {
Node *p = *head;
while (p->next != NULL) {
p = p->next;
}
p->next = newNode;
}
}
// 输出单链表各元素值
void printList(Node *head) {
Node *p = head;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
// 删除单链表中第i个元素
void delete(Node **head, int i) {
if (i < 1) {
printf("Invalid index!\n");
return;
}
Node *p = *head;
Node *prev = NULL;
int j = 1;
while (p != NULL && j < i) {
prev = p;
p = p->next;
j++;
}
if (p == NULL) {
printf("Index out of range!\n");
return;
}
if (prev == NULL) {
*head = p->next;
} else {
prev->next = p->next;
}
free(p);
}
int main() {
Node *head;
initList(&head);
// 在单链表尾部插入元素
append(&head, 1);
append(&head, 2);
append(&head, 3);
append(&head, 4);
append(&head, 5);
// 输出单链表各元素值
printList(head);
// 删除单链表中第i个元素
delete(&head, 3);
// 输出删除后的单链表各元素值
printList(head);
return 0;
}
```
运行结果:
```
1 2 3 4 5
1 2 4 5
```
阅读全文