个人代码如下所示,欢迎大佬指正。
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode
{
int data;
struct LNode* next;
}Node,*Link;
//删除值为x的结点
void Delete(Link& link, int x)
{
Node* p = link,*q;
while (p->next!=NULL)
{
if (p->next->data == x)
{
q = p->next;//保存待删除的结点p
p->next = q->next;//将结点p从链表中拿出去
free(q);
}
else
p = p->next;//否则直接检查下一个结点
}
}
//遍历并输出每一个结点
void PrintLink(Link link)
{
Node* p = link;
while (p->next!=NULL)
{
printf("%d ", p->next->data);
p = p->next;
}
}
int main()
{
Link link = (Link)malloc(sizeof(Node));
link->next = NULL;
Node* p = link,*s;
int x;
scanf("%d", &x);
while (x < 9999)//输入数字大于9999便停止
{
s = (Node*)malloc(sizeof(Node));
s->data = x;
p->next = s;
p = s;
scanf("%d", &x);
}
p->next = NULL;//修改最后一个结点的next指针
Delete(link, 5);
PrintLink(link);
return 0;
}