插入新结点到指定结点的指定位置

本文介绍了一个简单的HTML示例,演示了如何使用JavaScript在HTML文档中动态地向指定位置插入新的列表项。具体展示了当目标元素为列表的最后一项时,如何在其后添加新元素;若不是,则在目标元素前插入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<ul>
  <li id="bj" name="beijing">北京</li>
<li id="sh" name="shanghai">上海</li>
<li id="cq" name="chongqing">重庆</li>
</ul>
要求:插入新的节点 <li id="tj" name="tianjin">天津</li> 到<li id="sh" name="shanghai">上海</li>这个节点
(1)如上海节点是最后一个节点插入到该节点的<li id="sh" name="shanghai">上海</li>的后面,
(2)否则插入到该节点的前面

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>插入新结点到指定结点的指定位置</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
       <ul>
  <li id="bj" name="beijing">北京</li>
<li id="cq" name="chongqing">重庆</li>   
<li id="sh" name="shanghai">上海</li>
  </ul>
  </body>
  <script language="JavaScript">
//创建"天津节点"
     var tjElement=document.createElement("li");
tjElement.setAttribute("id","tj");
tjElement.setAttribute("name","tianjin");
var textElement=document.createTextNode("天津");
tjElement.appendChild(textElement);
//获取"上海"节点
var shElement=document.getElementById("sh");
//获取上海节点的父节点
var shParentElement=shElement.parentNode;
//获取上海父节点的最后一个子节点
var lastElement=shParentElement.lastChild;
//如果上海节点==父节点的最后一个子节点,上海就是最后一个子节点,天津节点插入到上海节点的后面
if(shElement==lastElement){
shParentElement.appendChild(tjElement);
}else{
//否则,天津节点插入上海节点的前面
shParentElement.insertBefore(tjElement,shElement);
}
  </script>
</html>
//用IE打开,其他浏览器的运行结果有可能是错的
/*带头结点头文件 hlinklist.h*/ #include <stdio.h> typedef int datatype; typedef struct link_node { datatype data; struct link_node *next; }node; /*初始化链表*/ node *init() { node *head; head=(node *)malloc(sizeof(node)); head->next=0; return head; } /*尾插法创建一个带头结点链表*/ node *creat(node *head) { node *r,*s; int x; r=head; printf("在链表中输入数据以0结束:"); scanf("%d",&x); while(x) { s=(node*)malloc(sizeof(node)); s->data=x; r->next=s; r=s; scanf("%d",&x); } r->next=0; return head; } /*打印链表的结点值*/ void print(node *head) { node *p; p=head->next; if(!p) printf("链表内容为空!"); else while(p) { printf("%5d",p->data); p=p->next; } printf("\n"); } /*在单链表中查找第i个结点的地址*/ node *find(node *head,int i) { node *p=head; int j=0; if(i<0) {printf("不存在!");return 0;} if(i==0) return head; while(p&&i!=j) { p=p->next; j++; } return p; } /*在带头结点的单链表第i个位置插入一个数*/ node *insert(node *head,int i,datatype x) { node *p,*q; q=find(head,i); if(!q) { printf("插入位置不存在!\n");return head;} else { p=(node *)malloc(sizeof(node)); p->data=x; p->next=q->next; q->next=p; } return head; } /*在带头结点的单链表中删除一个为x的值*/ node *dele(node *head,datatype x) { node *pre=head,*p; p=head; while(p&&p->data!=x) { pre=p;p=p->next; } if(p) { pre->next=p->next; free(p); } return head; } /*把带头结点的单链表倒置(以结点形式 )*/ node *Dao_zhi(node *head) { node *p,*s; p=head->next; head->next=NULL; while(p) { s=p; p=p->next; s->next=head->next; head->next=s; } return head; } /*删除链表中重复的结点 */ node *dele1(node *head) { node *pre,*p,*q; if(head->next==0||!head->next->next) { printf("链表为空!"); return head; } //pre=head->next; q=head->next; while(q) { pre=q; p=q->next; while(p) { while(p&&q->data!=p->data) { pre=p;p=p->next; } if(p) { pre->next=p->next; free(p); } p=pre->next; } q=q->next; } return head; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值