美文网首页
单链表的删除

单链表的删除

作者: 南风_001 | 来源:发表于2019-08-29 10:01 被阅读0次

单链表第i个数据删除结点的算法思路

  1. 声明一指针p指向链表头指针,初始化j从1开始;
  2. 当j<i时,就遍历链表,让p的指针向后移动,不断指向下一个结点,j累加1;
  3. 若链表末尾p为空,则说明第i个元素不存在;
  4. 否则查找成功,将欲删除的结点p->next 赋值给q;
  5. 单链表的删除标准语句p->next=q->next;
  6. 将q结点中的数据赋值给e,作为返回;
  7. 释放q结点;
  8. 返回成功。

实现代码算法如下:

/* 初始条件:顺序线性表L已存在,1<=i<=ListLength(L) */
/* 操作结果:删除L的第i个数据元素, */
Status ListDelete(LinkList *L, int i, ElemType *e) 
{
  int j;
  LinkList p,q;
  p = *L;
  j = 1;
  // 寻找遍历第i个元素并将p的next指向p,直到找到i为止
  while (p->next && j < 1) {
   p = p->next;
   ++j;
  }
  // 如果第i个元素不存在,报错
  if (!(p->next) || j > i)
  {
    return ERROR;
  }

  q = p->next;
  // 将q的后继赋值给p的后继
  p->next = q->next;
  // 因为要获取释放结点的值,所以这里要把释放结点的值赋值给*e
  *e = q->data;
  // 利用c语言的函数free 让系统回收此结点,释放内存
  free(q);
  return OK;
}

相关文章

  • 算法相关笔记,持续更新中...

    单链表 1.删除单链表中的指定节点: 2.单链表中删除指定数值的节点方法一:利用栈 3.单链表中删除指定数值的节点...

  • 链表基本操作

    1、删除单链表节点 2、插入单链表结点 单链表具体实现

  • 19.数据结构-线性表-2.单链表增加和删除

    0>>>初始化和创建 1>>>单链表的插入和删除。 1.单链表的插入 2.单链表的删除 2>>>单链表的整表创建和...

  • 1.单链表常用操作

    1.删除单链表中的指定节点 2.删除单链表中指定值的节点 (1). 利用栈删除单链表指定值的节点 (2). 用普通...

  • js+链表

    链表结构 删除链表某节点 遍历 反转单链表

  • 单向链表算法

    单向链表 反转单向链表 单链表查找倒数第k个节点 单链表递归倒序打印 单链表排序 单链表删除重复节点

  • 线性表的链式存储-单链表

    单链表操作 [x] 单链表的创建(尾插法、头插法) [x] 单链表的查找操作 [x] 单链表的删除操作 [x] 单...

  • 单链表的删除操作

    单链表的删除操作

  • 2018-07-26

    合并有顺序的数组 打印两个有序链表的公共部分 在单链表和双链表中删除倒数第k个节点 单链表 双链表 删除链表的中间...

  • JavaScript数据结构2——单链表

    以下的代码包括了以下几部分 单链表初始化 单链表的插入 单链表的删除 单链表的创建(头插法) 单链表的创建(尾插法...

网友评论

      本文标题:单链表的删除

      本文链接:https://www.haomeiwen.com/subject/nrvbectx.html