无头单链表节点的删除以及新节点之前的插入
来源:互联网 发布:dnf台服辅助源码 编辑:程序博客网 时间:2024/05/14 16:57
想要理解这两种操作,我们首先需要了解的是什么事无头单链表,无头单链表就是指的没有头指针的一个单独节点。就好比我们永指针遍历链表一样,某一时刻指针指向的一个非尾节点就是一个无头单链表。这样一个链表的最大特点就是该节点我们只知道它的数值以及一个指向下一个节点的指针。
现在来考虑我们需要做的操作,一个添加一个删除,首先是删除。我们知道,在一个链表中,我们如果想要删除某一个节点,我们首先需要知道该节点的上一个节点以及该节点的下一个节点,删除时我们只需要将上一个节点的节点指针直接指向该节点的下一个节点即可。简单来讲就是将该节点的指针直接赋给上一个节点的指针即可。而我们如果要操作一个无头指针,我们无法搜寻到该节点的上一个节点。这时我们可以先将下一个节点的值赋给该节点,等于说让两个节点保存的值相同,然后删除下一个节点即可。这样我们无需该节点的上一个节点即可办到。这样我们就成功将当前节点删除了。在C中代码如下
voidDeletNotTailNode(Pnode *phead)//删除无头链表的指定节点 参数需要传入当前节点{assert((*phead));(*phead)->date=(*phead)->next->date;//将下一节点的值复制到当前节点删除下一节点 即是删除当前节点(*phead)->next=(*phead)->next->next;}同理,添加也是相同的道理,添加我们需要新创建一个节点然后将新的节点接在当前节点的下一个节点,此时我们只需要互换两个节点保存的值即可。代码如下
void InsertNotTailNode(Pnode *phead,Datetype date)//在无头单链表非头节点前插入新节点{Pnode _new;Datetype i=0;_new->date=date;_new->next=(*phead)->next;(*phead)->next=_new;//将新节点插入到当前节点的下一个节点i=(*phead)->date;(*phead)->date=_new->date;_new->date=i;//交换两个节点数据上的值}
以上只是本人自己的总结,如有问题,望各路大佬多多指导 多谢!
0 0
- 无头单链表节点的删除以及新节点之前的插入
- 单链表的插入节点与删除节点
- 在已有的子节点前插入/删除一个新的子节点
- 创建新节点,删除节点,替换节点,特定节点前插入节点,特定节点后插入节点
- 二叉排序树,完成创建节点,插入节点,删除节点,查找节点,中序遍历的功能
- DOM替换replaceWith()和replaceAll() 之前学习了节点的内插入、外插入以及删除方法,这节会学习替换方法replaceWith .replaceWith( newConten
- 单链表的建立、测长、打印、删除节点、插入节点
- js的节点操作:插入,删除,复制,查找节点?
- 二叉树节点的插入与删除
- 理解红黑树的节点插入和删除
- 单链表的插入与删除节点
- 数据结构——单链表的创建、删除、遍历以及节点的插入、删除等操作
- 数据结构和算法设计专题之---单链表中在指定的节点前面插入以及删除一个节点
- C语言——链表部分(包括节点的建立、总长度、显示链表、插入节点以及删除节点)
- 单链表节点的插入
- DOM节点的插入
- 5-3 二分搜索树的节点插入(插入新的节点)
- 递归删除一个节点以及该节点下的所有节点
- Maven报错:Index downloads are disabled, search result may be incomplete.
- 文章标题
- 1009:二叉搜索树
- python题目-----python的12个有趣问题
- 在Mac下配置php开发环境:Apache+php+MySql
- 无头单链表节点的删除以及新节点之前的插入
- C语言退格\b的打印问题
- 清华大学 成绩排序
- gensim学习笔记(一)- Vector space model
- 两路归并排序
- 自己理解的算法
- ubuntu16.04下gedit打开文件,不能输入中文的解决办法
- matlab入门练习之杂例一
- JAVA大数_棋盘覆盖