【题目】试写一算法,删除带头结点单链表中所有值小于x的元素,并释放被删结点空间。

【题目】试写一算法,删除带头结点单链表中所有值小干x的元素,并释放被删结点空间。单链表类型定义如下∶

typedef struct LNode{
ElemType data;
struct LNode *next;

} LNode,*LinkList;

实现下列函数∶
Status DeleteSome_L(LinkList L,ElemType x);

/* 删除带头结点单链表L中所有值小干x的元素,
/* 并释放被测结点空间,返回实际删除的元素个数。*/

 

#include "allinclude.h"  //DO NOT edit this line
Status DeleteSome_L(LinkList L, ElemType x)  
{   // Add your code here
      LNode* t;
   LNode* p;
   int i;
   if(L->next==NULL)return ERROR;
   t=L;
   while (t->next!=NULL)
    {
      while(t->next->data<x)
      {
        i++;
        p=t->next;     //让p为要删除的结点   ,其中t为要删除的结点的上一结点
        t->next=t->next->next;   
        free(p);         //这行与上面三行为删除操作
        if(t->next==NULL)break;//防止越界
      }
      if(t->next==NULL)break;//防止越界
      t=t->next;
      
   }
  return i;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值