解题思路:
1.建立空的单链表。
2.依次插入n个元素。
3.遍历单链表的同时判断该结点是否为要删除的结点(所有的值为v的)。
4.删除后,打印单链表检测是否真的删除掉了。
注意事项:
***:利用尾插法建立单链表注意插入完元素后,记得把rear的next域置为空。
参考代码:
#include<stdio.h>
#include <stdlib.h>
#define MAXSIZES 1e5
typedef int Elemtype;
typedef struct Node
{
Elemtype data;
struct Node * next;
}Node;
typedef Node * LinkList;
int main()
{
int n,v;
Node *r,*p,*q;
//创建空的单链表。
LinkList L = (LinkList)malloc(sizeof(Node)*MAXSIZES);
L->next = NULL;
r = L;
scanf("%d",&n);
//读入n个结点到单链表中。
for(int i = 1;i <= n;i++)
{
p = (Node *)malloc(sizeof(Node));
scanf("%d",&p->data);
r->next = p;
r = p;
}
if(r != NULL) r->next = NULL;
scanf("%d",&v);
p = L;
//寻找值为v的元素,并删除该结点。
while(p->next != NULL)
{
if(p->next->data == v)
{
q = p->next;
p->next = q->next;
free(q);
}
else
{
p = p->next;
}
}
p = L->next;
//打印删除后的单链表。
while(p)
{
printf("%d ",p->data);
p = p->next;
}
//释放头结点。
free(L);
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复