JavaScript_在指定节点之后插入新节点_insertAfter(newElement, targetElement) _ JavaScript扩展


JavaScript 有一个函数 insertBefore    parentNode.insertBefore(newElement, targetElement)

功能: 在指定节点之前插入新节点, 但是没有实现 insertAfter 在指定节点之后插入新节点



下面是一个insertBefore 的实现, 供大家参考

思想:利用insertBefore实现

//功能: 在targetElement之后插入 新节点newElement
function insertAfter(newElement, targetElement){
    var parent = targetElement.parentNode;
    if(parent.lastChild == targetElement){
        parent.appendChild(newElement);
    }else{
        parent.insertBefore(newElement,targetElement.nextSibling);
    }
}



  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,针对您的问题,我可以给您提供以下的代码示例,以C++语言为例: ```c++ #include <iostream> using namespace std; struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; ListNode* insertBefore(ListNode* head, int insertVal) { ListNode* node = new ListNode(insertVal); if(!head) { node->next = node; return node; } ListNode* cur = head; while(cur->next != head && (cur->next->val < insertVal || cur->val >= insertVal)) { cur = cur->next; } node->next = cur->next; cur->next = node; return head; } ListNode* insertAfter(ListNode* head, int insertVal) { ListNode* node = new ListNode(insertVal); if(!head) { node->next = node; return node; } ListNode* cur = head; while(cur->next != head && (cur->next->val <= insertVal || cur->val > insertVal)) { cur = cur->next; } node->next = cur->next; cur->next = node; if(insertVal < head->val) { return node; } return head; } ListNode* insertAtTail(ListNode* head, int insertVal) { ListNode* node = new ListNode(insertVal); if(!head) { node->next = node; return node; } ListNode* cur = head; while(cur->next != head) { cur = cur->next; } node->next = cur->next; cur->next = node; return head; } ListNode* insertAtHead(ListNode* head, int insertVal) { ListNode* node = new ListNode(insertVal); if(!head) { node->next = node; return node; } ListNode* cur = head; while(cur->next != head) { cur = cur->next; } node->next = head; cur->next = node; return node; } int main() { ListNode* head = new ListNode(1); head->next = head; head = insertBefore(head, 3); head = insertBefore(head, 2); head = insertAfter(head, 4); head = insertAfter(head, 5); head = insertAtTail(head, 6); head = insertAtHead(head, 0); ListNode* cur = head; do { cout << cur->val << " "; cur = cur->next; } while(cur != head); cout << endl; return 0; } ``` 上述示例包括四个函数insertBefore、insertAfter、insertAtTail和insertAtHead,分别用于在单链表的某个节点之前、之后、尾部和头部插入节点。 其中,每个节点由一个整数值和指向下一个节点的指针组成。当单链表为空时,头指针指向空指针。 在插入节点时,我们需要遍历单链表,找到插入位置。具体而言,对于插入到某节点之前或之后,我们需要找到前一个节点,然后将节点插入到前一个节点的next指针指向的位置;对于插入到尾部或头部,我们需要找到单链表的尾节点,然后在尾节点的next指针指向的位置插入节点。 希望这个回答能对您有所帮助!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值