力扣:移除链表元素(C语言)-创新互联
一、解题思路 (1)需要先判断一下链表的情况:题目描述:
成都创新互联公司专注于网站建设|成都网站维护|优化|托管以及网络推广,积累了大量的网站设计与制作经验,为许多企业提供了网站定制设计服务,案例作品覆盖成都纯水机等行业。能根据企业所处的行业与销售的产品,结合品牌形象的塑造,量身定制品质网站。给你一个链表的头节点
head
和一个整数val
,请你删除链表中所有满足Node.val == val
的节点,并返回 新的头节点 。
1.链表是否为空,为空直接返回NULL。
2.需要删链表的头节点,则head->next。
3.正常删除链表中的节点。
(2)为此的解决方法1是我们在最前方加一个if的判断语句就可以,防止程序出问题
2是我们需要删除头节点的话那我们新建一个头节点H,让H->next=head,这样的话如果删除了head,也不影响链表。
3我学数据结构学的不行,我就直接用了两个指针,判断值val与一个指针的next->val,这样的话,我可以删除这个节点,我不会判断指针的val然后删除的。
二、代码代码如下(示例):
struct ListNode* removeElements(struct ListNode* head, int val){
if(head==NULL) return NULL;//先判断是不是空链表
struct ListNode*H;
H=(struct ListNode*)malloc(sizeof(struct ListNode));
H->next=head;//新建头节点
struct ListNode*p=H;
struct ListNode*s=NULL;//建立两个指针,p指向我的头指针,s指针先是NULL,删除节点用。
while(p->next!=NULL)
{
if(p->next->val==val)
{
s=p->next;
p->next=p->next->next;//只会这种删除方式,希望大佬会的能跟我讲讲(讲明白点,我笨呜呜呜)
free(s);
}
else
{
p=p->next;
}
}
return H->next;//head是否被删除不影响
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网站标题:力扣:移除链表元素(C语言)-创新互联
标题路径:http://lswzjz.com/article/dgehoi.html