2 zhoulina1994 zhoulina1994 于 2014.10.06 18:53 提问

数据结构单链表的插入与删除

设单链表某一节点为p,怎样在p节点前插入一个结点?怎样删除p节点自身?(要求:用Java语言写出具体程序语言)

1个回答

woweile
woweile   2014.10.09 17:07

这个主要是定位问题,只要能定到节点p的位置就好。
List list = new LinkedList();
list.add(list.indexOf(p), "插入内容");//由于是链表结构,所以数据插入位置的后方下标自动后移
list.remove(list.indexOf(p));//删除p节点
就是这个思路,不知道对你有用不。。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
数据结构-单链表的读取,插入与删除
链表定义:struct ListNode { int value; ListNode *next; };单链表读取在顺序存储结构中,比如数组中,想要获取某一个位置的数据是非常容易的一件事,但是在链表中却要麻烦一些,因为链表的存储单元并不是连续的,而且我们只知道链表的头结点,也就是想知道第i个位置的数据,只能从头找下去,并没有什么其他的好方法。 需要注意的是,如果i大于链表的长度的话程序会异
数据结构_单链表的插入与删除_C语言源代码
int ListInsert(LNode *&L, int i, int e) {     int j=0;     LNode *p=L;     LNode *s=NULL;     while(j     {        p=p->next;        ++j;        if(NULL==p)        {         return 0;    
数据结构 单链表插入删除操作(c语言实现)
#include "stdlib.h" #include "stdio.h" typedef struct LNode{ int data; struct LNode *next; }LNode,*LinkList; void Create_List(LinkList &L){ int data; LinkList p,q; L=(LinkList)malloc(sizeof(L
数据结构与算法基础(二)之单链表的插入与删除操作
今天主要来讲一讲单链表的插入与删除操作的步骤和算法解释。这是单链表最基本的操作但是也是最重要的基础之一,有些地方还比较容易出错。下面我就结合源代码在上面加上注释来解释每一步的作用。 **一、单链表的插入操作** 1、图示(截图来自网易云课堂鱼C工作室《数据结构和算法》课程视频) 2、 要想将结点s插入到ai与ai+1之间,不需要移动数据元素,只需要在ai与ai+1之间插入一个新的结点,
C++ 数据结构的单链表的建立,插入,删除操作
动态内存分配应用举例(链表)  我们知道,数组式计算机根据事先定义好的数组类型与长度自动为其分配一连续的存储单元,相同数组的位置和距离都是固定的,也就是说,任何一个数组元素的地址都可一个简单的公式计算出来,因此这种结构可以有效的对数组元素进行随机访问。但若对数组元素进行插入和删除操作,则会引起大量数据的移动,从而使简单的数据处理变得非常复杂,低效。  为了能有效地解决这些问题,一种称为“链表”
数据结构—链表元素的删除和插入
链表相对于线性表的优点就在于插入和删除十分方便。 那么我用一个有意思的比喻来描述一下这个过程。插入:小红和小琴是好闺蜜,她们天天都拉着手(找男的比喻不大好啊,23333) 咳咳,就是这样(图中蓝色上衣的是小红,绿色裙子的是小琴) 小红的手和小琴的手拉着一起之后有一个女生名字叫小美也想加入她们,和她们成为好闺蜜,那么就成了这样了 →_→ (我不是故意的) 这样小红的手和小琴的手就不拉
数据结构:程序加图示分析单链表的插入和删除操作
下图展示了单链表的基本结构: head指针是链表的头指针,指向第一个节点,每个节点的next指针域指向下一个节点,最后一个节点的next指针域为NULL,在图中用0表示。 下面先来看程序(栈的链式存储实现,另外一个实现点这里)和对应的输出(注意输出前进行了链表反转(见《单链表反转》,否则程序后面的while循环输出的顺序是250,200,100),接着来分析程序:  C+
数据结构学习(三)——单链表的操作之查找、删除、插入。
创建链表的方法采用尾插法,且是改进版的尾插法,即添加了一个辅助头节点。 下面的代码是对插入、删除、查找的一个整体操作。其中查找分为按值和按位置查找。删除和插入都是按给定位置操作。 #include #include typedef struct list { char data; struct list *next; }linklist; linklist *CreateLinkl
数据结构单链表实现插入删除查找
///////////list3.c实现链表的插入删除查找#include#include#includetypedef struct LNode //////////定义数据结构体{ int num; char name[20]; struct LNode* next;}*Link;
数据结构单链表插入、删除和修改实验报告
数据结构单链表插入、删除和修改实验报告 一、实验目的 1.理解数据结构中带头结点单链表的定义和逻辑图表示方法。 2.掌握单链表中结点结构的JAVA描述。 3.熟练掌握单链表的插入、删除和查询算法的设计与JAVA实现。 4.熟练掌握简单的演示菜单与人机交互设计方法。 二、实验内容 1. 编制一个演示单链表插入、删除、查找等操作的程序。 三、实验步骤 1.需求分析 本演示程序用JAVA编写,完成单链表的生成,任意位置的插入、删除,以及确定某一元素在单链表中的位置。 ① 输入的形式和输入值的范围:插入元素时需要输入插入的位置和元素的值;删除元素时输入删除元素的位置;查找操作时需要输入元素的值。在所有输入中,元素的值都是整数。 ② 输出的形式:在所有三种操作中都显示操作是否正确以及操作后单链表的内容。其中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置。   ③ 程序所能达到的功能:完成单链表的生成(通过插入操作)、插入、删除、查找操作。 ④ 测试数据:  A. 插入操作中依次输入11,12,13,14,15,16,生成一个单链表    B. 查找操作中依次输入12,15,22返回这3个元素在单链表中的位置    C. 删除操作中依次输入2,5,删除位于2和5的元素 2.概要设计 1)为了实现上述程序功能,需要定义单链表的抽象数据类型:   ADT LinkList {    数据对象:D={ai|ai∈IntegerSet,i=0,1,2,…,n,n≥0}    数据关系:R={<ai,ai+1>|ai,ai+1 ∈D}    基本操作: (1)insert 初始化状态:单链表可以不为空集;操作结果:插入一个空的单链表L。   (2)decelt     操作结果:删除已有的单链表的某些结点。 (3)display     操作结果:将上述输入的元素进行排列显示。    (4)modify     操作结果:将上述输入的某些元素进行修改。    (5)save     操作结果:对上述所有元素进行保存。    (6)load     操作结果:对上述元素进行重新装载。   }   2)本程序包含7个函数:   ① 主函数main()   ② 保存单链表函数save()   ③ 重载操作菜单函数load()   ④ 显示单链表内容函数display ()   ⑤ 插入元素函数insert ()   ⑥ 删除元素函数decelt ()   ⑦ 修改元素函数modify()   各函数间关系如下: 3.详细设计   实现概要设计中定义的所有的数据类型,对每个操作给出伪码算法。对主程序和其他模块也都需要写出伪码算法。   1) 结点类型和指针类型   typedef struct node {    int data;    struct node *next;   }Node,*singleLIST.java;   2) 单链表的基本操作   为了方便,在单链表中设头结点,其data域没有意义。 bool insert(singleLIST) (伪码算法)   bool modify(singleLIST) (伪码算法)   void delect(singleLIST)   (伪码算法)   void display()   (伪码算法) 3) 其他模块伪码算法 4.调试分析   (略) 5.使用说明 程序名为 ,运行环境为Windows。程序执行后显示   ========================   0----EXIT   1----INSERT   2----DELETE   3----DISPLAY 4----MODIFY 5----EXIST =======================   SELECT:   在select后输入数字选择执行不同的功能。要求首先输入足够多的插入元素,才可以进行其他的操作。每执行一次功能,就会显示执行的结果(正确或错误)以及执行后单链表的内容。 选择5:退出程序   选择1:显示"INSERT =" ,   要求输入要插入的位置和元素的值(都是整数)。   选择2:显示"DELETE =" ,   要求输入要删除元素的位置,执行成功后返回元素的值。   选择3:显示"MODIFY = " , 选择要修改的对象,执行成功后返回新的元素值。 选择4:显示"DIAPLAY= "   显示所有单链表中的元素,自动进行排序。