首页 > 编程语言 >笔试题:设计一个算法删除单链表L(有头结点)中的一个最小值结点

笔试题:设计一个算法删除单链表L(有头结点)中的一个最小值结点

时间:2024-04-22 22:37:01浏览次数:22  
标签:结点 单链 有头 findend 最小值 findit findmin next

数据结构——笔试题

设计一个算法删除单链表L(有头结点)中的一个最小值结点

/********************************************************
*  func name:  DelMinNode
*  author   :  [email protected]
*  date     :  2024/04/22
*  function :  删除单链表L(有头结点)中的一个最小值结点
*  note     :  None
*
*********************************************/

bool DelMinNode(LList_t *head,DataType_t data)
{ 
  LList_t *findmin = NULL;
  LList_t *findend = NULL;
  LList_t *findit = NULL;
  //判断链表是否为空,如果为空,则删除失败
	if (NULL == head->next)
	{
		return false;
	}
  //使用两个指针指向首结点

   findmin=head->next;
   findend=head->next;
   findit=head->next;
  //遍历链表寻找最小值结点
  while(findend->next){
    if(findmin->data < findend->next->data){
      findend=findend->next;
    }
    else{
     findmin=findend;  //同步两个指针的位置,继续遍历
     findend=findend->next;
    } 
  }
  //遍历找出findmin前驱
  while(findit!=findmin){
      findit=findit->next;
    }
    //删除最小值
    findit->next=findmin->next;
    findmin=NULL;
    free(findmin)
    return true;
}

标签:结点,单链,有头,findend,最小值,findit,findmin,next
From: https://www.cnblogs.com/luo-tt/p/18151716

相关文章

  • JZ8 二叉树的下一个结点
    #include<cstddef>classSolution{public:vector<TreeLinkNode*>nodes;//用户得到的输入只有一个子树根节点TreeLinkNode*GetNext(TreeLinkNode*pNode){TreeLinkNode*root=pNode;//获取根节点 //顺着next指针一直......
  • 查找链表中倒数第k(k为正整数)个位置上的结点,查找成功输出该结点的data值,并返回1,否则只
    /********************************************************name:FindKNode* function:查找链表中倒数第k(k为正整数)个位置上的结点*查找成功输出该结点的data值,并返回1,否则只返回0*argument*@head:链表头结点的地......
  • 删除最小值结点
    /********************************************************name:DelTargetNode* function:删除单链表L(有头结点)中的一个最小值结点*argument*@L:链表头结点的地址**retval:None*author:Dazz*date:......
  • 删除链表中(有头节点)一个最小值节点
    删除链表中(有头节点)一个最小值节点/********************************************************************** name : deletelinkedlist* function:删除链表中(有头节点)一个最小值节点* argument:* @Head:链表结构体头头节点地址** retval :调用成功......
  • 删除链表中指定结点
    删除链表中指定结点/********************************************************name:DelTargetNode* function:删除链表中指定的结点*argument*@head:链表头结点的地址*@num:需要删除的第num个结点**retva......
  • 设计一个算法删除单链表L(有头节点)中的一个最小值结点
    数据结构链表笔试题:设计一个算法删除单链表L(有头节点)中的一个最小值结点。/****************************************************************** * filename : linkedlist.c* author : [email protected]* data : 2024/04/22* function : 删除单链表中的一个最小......
  • 设计一个算法删除单链表L(有头结点)中的一个最小值结点
    设计一个算法删除单链表L(有头结点)中的一个最小值结点/********************************************************************* 函数名称: LList_delatemin* 函数功能:删除单链表L(有头结点)中的一个最小值结点* 函数参数:* @a:*L*@b:*返回......
  • 假设该链表只给出了头指针 head。在不改变链表的前提下,请设计一个尽可能高效的算法,查
    假设该链表只给出了头指针head。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k(k为正整数)个位置上的结点。若查找成功,算法输出该结点的data值,并返回1;否则,只返回0。/********************************************************************* 函数名称......
  • 删除链表中最小的一个结点
    include<stdio.h>include<stdbool.h>include<stdlib.h>//指的是单向链表中的结点有效数据类型,用户可以根据需要进行修改typedefintDataType_t;//构造链表的结点,链表中所有结点的数据类型应该是相同的typedefstructLinkedList{DataType_tdata;//结点......
  • 删除链表中的尾部结点
    删除链表中的尾部结点/********************************************************name:DelTailNode* function:删除链表尾部结点*argument*@head:链表头结点的地址**retval:成功返回1,失败返回0*author:Dazz*......