考虑在链表第 i 个元素结点前插入数据元素的 *** 作,说明为什么采用附加头结点能 够方便该 *** 作的实现?

考虑在链表第 i 个元素结点前插入数据元素的 *** 作,说明为什么采用附加头结点能 够方便该 *** 作的实现?,第1张

如果添加头结点,在第0个元素节点插入数据的实现逻辑和在任意元素节点前插入数据的实现逻辑相同。

如果不添加头结点,需要对插入位置进行判断:

如果是第0个元素,需要创建新节点,其next指向head,并且head修改指向为新节点;

如果不是第0个元素,直接找到第i-1个元素节点,插入新节点,其next指向第i个元素,同时修改第i-1个元素节点的next指向为新节点。

第一种

function insertEle() { var oTest = document.getElementById("box-one")var newNode = document.createElement("div")var reforeNode = document.getElementById("p1")newNode.innerHTML = " This is a newcon "oTest.insertBefore(newNode,reforeNode.nextSibling)//新建的元素节点插入id为P1节点元素的后面。 }

第二种// 自定义函数向后插入function insertAfter( newElement, targetElement){ var parent = targetElement.parentNode if ( parent.lastChild == targetElement ) {// 如果最后的节点是目标元素,则直接添加。因为默认是最后parent.a( newElement ) } else {//如果不是,则插入在目标元素的下一个兄弟节点的前面。也就是目标元素的后面parent.insertBefore( newElement, targetElement.nextSibling ) }}

可以使用JavaScript自带的insertBefore。

实例

向列表中插入一个项目:

document.getElementById("myList").insertBefore(newItem,existingItem) 定义和用法:

insertBefore() 方法在您指定的已有子节点之前插入新的子节点。

提示:如果您希望创建包含文本的新列表项,请记得创建文本节点形式的文本,以便追加到 LI 元素中,然后向列表插入这个 LI。

您也可以使用 insertBefore 方法插入/移动已有元素。

实例:

把一个列表项从一个列表移动到另一个中:

var node=document.getElementById("myList2").lastChild

var list=document.getElementById("myList1")

list.insertBefore(node,list.childNodes[0])

插入之前:

Coffee

Tea

Water

Milk

插入之后:

Milk

Coffee

Tea

Water


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11769845.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存