c语言实现链式线性表删除指定元素
时间: 2023-11-25 18:08:43 浏览: 41
链式线性表删除指定元素的C语言实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node *next;
} Node, *LinkedList;
void deleteElement(LinkedList *list, int element) {
Node *p, *q;
p = *list;
q = NULL;
while (p != NULL && p->data != element) {
q = p;
p = p->next;
}
if (p == NULL) {
printf("Element not found.\n");
return;
}
if (q == NULL) {
*list = p->next;
} else {
q->next = p->next;
}
free(p);
}
int main() {
LinkedList list = NULL;
Node *p, *q;
int i = 0;
// create list
for (i = 0; i < 5; i++) {
p = (Node*) malloc(sizeof(Node));
p->data = i + 1;
p->next = NULL;
if (list == NULL) {
list = p;
} else {
q->next = p;
}
q = p;
}
// print list
printf("List: ");
p = list;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
// delete element
deleteElement(&list, 3);
// print list after deletion
printf("List after deletion: ");
p = list;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
// free memory
while (list != NULL) {
p = list;
list = list->next;
free(p);
}
return 0;
}
```