题目内容:
建立长度为n的单链表,n>0,删除单链表中等于给定值的元素。数据类型指定为整型。
输入格式:
第一行为链表长度n;
第二行为链表中的n个数据元素的值;
第三行为需要删除的元素值。
输出格式:
输出为删除后的链表中的所有数据元素的值。
输入样例:
4
45 12 34 8
34
输出样例:
45 12 8
题目内容:
建立长度为n的单链表,n>0,删除单链表中等于给定值的元素。数据类型指定为整型。
输入格式:
第一行为链表长度n;
第二行为链表中的n个数据元素的值;
第三行为需要删除的元素值。
输出格式:
输出为删除后的链表中的所有数据元素的值。
输入样例:
4
45 12 34 8
34
输出样例:
45 12 8
供参考:
#include <stdio.h>
#include <stdlib.h>
typedef struct node_s {
int data;
struct node_s* next;
} node_t;
void create_List(node_t** L,int n)// N个结点链表生成
{
int i;
node_t* pt = NULL, * pL = NULL;
(*L) = (node_t*)malloc(sizeof(node_t));
(*L)->next = NULL;
pL = (*L);
for (i = 0; i < n; i++) {
pt = (node_t*)malloc(sizeof(node_t));
pt->next = NULL;
scanf("%d", &pt->data);
pL->next = pt;
pL = pt;
}
}
void delete_x(node_t* L, int x)//刪除链表內值为 x 的结点
{
if (!L->next) return;
node_t* pL = L->next, * pre = L;
while (pL) {
if (pL->data == x) {
pre->next = pL->next;
free(pL);
pL = pre;
}
else {
pre = pL;
pL = pL->next;
}
}
}
void print_List(node_t* L)//输出链表函数
{
node_t* pL = L;
while (pL->next) {
printf("%d ", pL->next->data);
pL = pL->next;
}
}
int main()
{
int N, x;
node_t* List = NULL;
scanf("%d", &N);
create_List(&List, N);
scanf("%d", &x);
delete_x(List, x);
print_List(List);
return 0;
}