删除一个无头单链表的非尾节点+从尾到头打印单链表

来源:互联网 发布:java 网络爬虫demo 编辑:程序博客网 时间:2024/06/02 06:19


删除一个单链表的非尾结点,并且不能遍历链表,所以我们可以尝试删除其他结点以代替此节点,在这里,我们用要删除的结点的下一个结点来代替此节点,删除下一个结点之前,先将这个节点保存起来,再把此结点的值域和指针域赋值给原本要删除的结点,这样一来,只用删除当前被保存起来的结点即可。


部分代码:

// 删除单链表的非尾结点void DeleteNotTailNode(PNode pos){PNode pCurNode = NULL;if(pos == NULL || pos->_pNext == NULL)return;pCurNode = pos->_pNext;pos->_data = pCurNode->_data;pos->_pNext = pCurNode->_pNext;free(pCurNode);}



从尾到头打印单链表 ,利用递归的方法可以轻松地实现。


// 使用递归实现从尾到头打印单链表void PrintFromTail2Head(PNode pHead){if(pHead == NULL)return;PrintFromTail2Head(pHead->_pNext);printf("%d->",pHead->_data);}




阅读全文
0 0