首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
非尾专题
1.删除一个无头单链表的非尾节点 2.从尾到头打印单链表
1.删除一个无头单链表的非尾节点 这里主要是采用数据替换,将需要删除的节点的下一个结点放在需要删除结点的位置,依次将需要删除结点的后续结点前移,即可完成删除。 void DeleteNotTail(pNode pos){pNode cur = pos->_next;assert(pos->_next); //数据替换pos->_data = pos->_n
阅读更多...
【单链表经典面试题解析二】删除一个无头单链表的非尾节点(不能遍历链表)
要在不能遍历一遍单链表的情况下,删除单链表的非尾结点。我们可以试试如下这种方法: 首先,我们先建立一个节点pCur,令节点pCur指向要删除的节点pos的下一个节点,然后,我们先把pCur的值赋给pos,然后再删除掉pCur这个节点,示意图如下所示: 令节点pCur指向要删除的节点pos的下一个节点: 我们先把pCur的值赋给pos,然后再删除掉pCur这个节点:
阅读更多...
删除一个无头单链表的非尾节点(不能遍历链表)
我们在对单链表进行删除操作的时候,只需要遍历一遍链表即可删除,但是如果不允许遍历链表我们要怎样进行处理呢。 我们如果直接释放掉要删除的节点,那我们就无法得到前一个节点,链表就不能重新链接起来,我们可以将要删除节点的内容改为,该节点下一个节点的内容,然后释放下一节点,这样便不需要知道前一个节点即可完成删除并重新链接。 typedef struct SListNode{struct SLis
阅读更多...
在结点类型为DLink Node 的双链表中将p所指结点(非尾结点)与其后继结点交换的操作
在结点类型为DLink Node 的双链表中将p所指结点(非尾结点)与其后继结点交换的操作 C语言题解 #include <stdio.h>#include <stdlib.h>#include <stdbool.h>typedef struct Node{int data;struct Node *next,*prior;}DNode,*DLinkList;void InitList(
阅读更多...
链表--删除一个无头单链表的非尾节点
方法: 因为是无头的(参数不传头),所以不能遍历。 判断此结点是不是要删除的结点,如果是,则将下一个值覆盖过来,删除下一个结点。 void DeleteNode(ListNode* posNode){if(posNode){ListNode* pNext = posNode->Next;posNode->Value = pNext->Value;posNode->Next = pNext-
阅读更多...
删除无头单链表的非尾节点
删除无头单链表的非尾节点:可以转化为删除该节点的下一个节点,删除之前把之传给该节点即可。 可以不要返回值,此处我加上返回值信息是为了判断是否删除成功。 int DelNotTail(Node* pos) //删除非尾节点{if(pos == NULL || pos->_next == NULL)return -1;else //让pos保存pos下个节点的值,然后删除
阅读更多...