力扣:移除链表元素(C语言)-创新互联

题目描述:

成都创新互联公司专注于网站建设|成都网站维护|优化|托管以及网络推广,积累了大量的网站设计与制作经验,为许多企业提供了网站定制设计服务,案例作品覆盖成都纯水机等行业。能根据企业所处的行业与销售的产品,结合品牌形象的塑造,量身定制品质网站。

给你一个链表的头节点 head和一个整数 val,请你删除链表中所有满足 Node.val == val的节点,并返回 新的头节点 。

一、解题思路 (1)需要先判断一下链表的情况:

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://pwwzsj.com/article/dgehoi.html