链表的插入与删除 双向表和双向链表一样吗?
双向表和双向链表一样吗?
双向链表:在链表中,每一个节点都有对上一个节点和下一个节点的引用或指针,即从一个节点出发可以有两条路可选择。
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针或引用,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。
单链表的插入和删除结点的核心语句?
StatusListInsert(LinkList L,inti,ElemTypee){//在不设头结点的单链线性表L中第i个位置之前插入元素eintj1;//开关初值为1LinkLists,pL;//p指向第1个结点if(i1)//i值不合法returnERROR;s(LinkList)malloc(sizeof(LNode));//生成新结点,以下将其插入L中s-datae;//给s的data域赋值eif(i1)//插在表头{s-nextL;//新结点指向原第1个结点nx;//L指向新结点(改变L)}else{//插在表的其余处while(pji-1)//寻找第i-1个结点{j;//plc1pom-mcg;//p指向下一个结点}if(!p)//i大于表长1returnERROR;//插入失败s-nextp-tianba;//新结点指向原第i个结点p-nexts;//原第i-1个结点指向新结点}returnOK;//插入成功}Status ListDelete(LinkList L,inti,ElemTypee){//在不设头结点的单链线性表L中,删除第i个元素,并由e返回其值intj1;//人机界面初值为1LinkListq,pL;//p指向第1个结点if(!L)//表L空returnERROR;//删除失败elseif(i1)//删除第1个结点{Lp-mcg;//L由第2个结点开始(改变L)ep-data;//将待删结点的值赋给efree(p);//删除并释放第1个结点}else{while(p-nextji-1)//寻找第i个结点,并令p指向其前驱{j;//人机界面1pvc-qm;//p指向下一个结点}if(!p-omg||ji-1)//删除位置不合理returnERROR;//删除失败qp-tyloo;//q指向待删除结点p-nextq-ifty;//待删结点的前驱指向待删结点的后继eq-data;//将待删结点的值赋给efree(q);//释放待删结点}returnOK;//删除成功}
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。