删除链表节点
来源:互联网 发布:奢侈品品牌 知乎 编辑:程序博客网 时间:2024/06/10 21:25
假设现有一个单向的链表,但是只知道只有一个指向该节点的指针p,并且假设这个节点不是尾节点,试编程实现删除此节点
方法一:
算法是:把后面的结点都往前移,然后删除最后一个结点
比如链表是:1 2 3 4 5
要删除2,那么就把3 4 5往前面移,得到这样1 3 4 5 5
然后删除最后一个结点
void deleteItem(Node *p)
{
while (NULL != p->next)
{
p->item=p->next->item;
p=p->next;
}
delete p;
p=NULL;
}
方法2,效率会更高点:
把3(值域)复制到2,变成1 3 3 4 5 然后修改原来2 结点的尾指针指向4 然后删除第二个3
1 3 [3] 4 5
void deleteItem (Node *p)
{
Node *tmp=NULL;
if (p->next!=NULL)
{
p->item=p->next->item;
}
tmp=p->next;
p->next=p->next->next;
delete tmp;
tmp=NULL;
}
方法一:
算法是:把后面的结点都往前移,然后删除最后一个结点
比如链表是:1 2 3 4 5
要删除2,那么就把3 4 5往前面移,得到这样1 3 4 5 5
然后删除最后一个结点
void deleteItem(Node *p)
{
while (NULL != p->next)
{
p->item=p->next->item;
p=p->next;
}
delete p;
p=NULL;
}
方法2,效率会更高点:
把3(值域)复制到2,变成1 3 3 4 5 然后修改原来2 结点的尾指针指向4 然后删除第二个3
1 3 [3] 4 5
void deleteItem (Node *p)
{
Node *tmp=NULL;
if (p->next!=NULL)
{
p->item=p->next->item;
}
tmp=p->next;
p->next=p->next->next;
delete tmp;
tmp=NULL;
}
- 删除链表节点
- 删除链表节点
- 删除链表节点
- 删除链表节点
- 链表删除节点
- 双向链表 删除节点 插入节点
- 如何删除链表节点
- 单向链表删除节点
- 如何删除链表节点
- 单向链表删除节点
- 单向链表删除节点
- 删除指定链表节点
- 链表给定节点删除
- 双向链表删除节点
- 删除链表中间节点
- 删除链表中间节点
- 单向链表删除节点
- 删除链表重复节点
- VSS 数据库地址批量更改器
- 字符串处理类函数及判断是否为数字函数
- 四、CentOS 命令汇集
- 高性能web不错的专题
- ubuntu安装eclipse
- 删除链表节点
- 单链表转置
- cocoa FAQ之控件篇
- 编程技术面试的五大要点
- IOS开发常用的开源类库和一些示例
- Air Native Extension Example Hello World
- 深入jvm专题
- AJAX POST和GET区别
- 请原谅篇